1// Copyright 2021 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// Code generated by protoc-gen-go. DO NOT EDIT. 16// versions: 17// protoc-gen-go v1.26.0 18// protoc v3.12.2 19// source: google/devtools/testing/v1/test_execution.proto 20 21package testing 22 23import ( 24 context "context" 25 reflect "reflect" 26 sync "sync" 27 28 _ "google.golang.org/genproto/googleapis/api/annotations" 29 grpc "google.golang.org/grpc" 30 codes "google.golang.org/grpc/codes" 31 status "google.golang.org/grpc/status" 32 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 33 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 34 durationpb "google.golang.org/protobuf/types/known/durationpb" 35 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 36) 37 38const ( 39 // Verify that this generated code is sufficiently up-to-date. 40 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 41 // Verify that runtime/protoimpl is sufficiently up-to-date. 42 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 43) 44 45// Specifies how to execute the test. 46type OrchestratorOption int32 47 48const ( 49 // Default value: the server will choose the mode. Currently implies that 50 // the test will run without the orchestrator. In the future, 51 // all instrumentation tests will be run with the orchestrator. 52 // Using the orchestrator is highly encouraged because of all the benefits it 53 // offers. 54 OrchestratorOption_ORCHESTRATOR_OPTION_UNSPECIFIED OrchestratorOption = 0 55 // Run test using orchestrator. 56 // ** Only compatible with AndroidJUnitRunner version 1.0 or higher! ** 57 // Recommended. 58 OrchestratorOption_USE_ORCHESTRATOR OrchestratorOption = 1 59 // Run test without using orchestrator. 60 OrchestratorOption_DO_NOT_USE_ORCHESTRATOR OrchestratorOption = 2 61) 62 63// Enum value maps for OrchestratorOption. 64var ( 65 OrchestratorOption_name = map[int32]string{ 66 0: "ORCHESTRATOR_OPTION_UNSPECIFIED", 67 1: "USE_ORCHESTRATOR", 68 2: "DO_NOT_USE_ORCHESTRATOR", 69 } 70 OrchestratorOption_value = map[string]int32{ 71 "ORCHESTRATOR_OPTION_UNSPECIFIED": 0, 72 "USE_ORCHESTRATOR": 1, 73 "DO_NOT_USE_ORCHESTRATOR": 2, 74 } 75) 76 77func (x OrchestratorOption) Enum() *OrchestratorOption { 78 p := new(OrchestratorOption) 79 *p = x 80 return p 81} 82 83func (x OrchestratorOption) String() string { 84 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 85} 86 87func (OrchestratorOption) Descriptor() protoreflect.EnumDescriptor { 88 return file_google_devtools_testing_v1_test_execution_proto_enumTypes[0].Descriptor() 89} 90 91func (OrchestratorOption) Type() protoreflect.EnumType { 92 return &file_google_devtools_testing_v1_test_execution_proto_enumTypes[0] 93} 94 95func (x OrchestratorOption) Number() protoreflect.EnumNumber { 96 return protoreflect.EnumNumber(x) 97} 98 99// Deprecated: Use OrchestratorOption.Descriptor instead. 100func (OrchestratorOption) EnumDescriptor() ([]byte, []int) { 101 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{0} 102} 103 104// Actions which Robo can perform on UI elements. 105type RoboActionType int32 106 107const ( 108 // DO NOT USE. For proto versioning only. 109 RoboActionType_ACTION_TYPE_UNSPECIFIED RoboActionType = 0 110 // Direct Robo to click on the specified element. No-op if specified element 111 // is not clickable. 112 RoboActionType_SINGLE_CLICK RoboActionType = 1 113 // Direct Robo to enter text on the specified element. No-op if specified 114 // element is not enabled or does not allow text entry. 115 RoboActionType_ENTER_TEXT RoboActionType = 2 116 // Direct Robo to ignore interactions with a specific element. 117 RoboActionType_IGNORE RoboActionType = 3 118) 119 120// Enum value maps for RoboActionType. 121var ( 122 RoboActionType_name = map[int32]string{ 123 0: "ACTION_TYPE_UNSPECIFIED", 124 1: "SINGLE_CLICK", 125 2: "ENTER_TEXT", 126 3: "IGNORE", 127 } 128 RoboActionType_value = map[string]int32{ 129 "ACTION_TYPE_UNSPECIFIED": 0, 130 "SINGLE_CLICK": 1, 131 "ENTER_TEXT": 2, 132 "IGNORE": 3, 133 } 134) 135 136func (x RoboActionType) Enum() *RoboActionType { 137 p := new(RoboActionType) 138 *p = x 139 return p 140} 141 142func (x RoboActionType) String() string { 143 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 144} 145 146func (RoboActionType) Descriptor() protoreflect.EnumDescriptor { 147 return file_google_devtools_testing_v1_test_execution_proto_enumTypes[1].Descriptor() 148} 149 150func (RoboActionType) Type() protoreflect.EnumType { 151 return &file_google_devtools_testing_v1_test_execution_proto_enumTypes[1] 152} 153 154func (x RoboActionType) Number() protoreflect.EnumNumber { 155 return protoreflect.EnumNumber(x) 156} 157 158// Deprecated: Use RoboActionType.Descriptor instead. 159func (RoboActionType) EnumDescriptor() ([]byte, []int) { 160 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{1} 161} 162 163// The detailed reason that a Matrix was deemed INVALID. 164type InvalidMatrixDetails int32 165 166const ( 167 // Do not use. For proto versioning only. 168 InvalidMatrixDetails_INVALID_MATRIX_DETAILS_UNSPECIFIED InvalidMatrixDetails = 0 169 // The matrix is INVALID, but there are no further details available. 170 InvalidMatrixDetails_DETAILS_UNAVAILABLE InvalidMatrixDetails = 1 171 // The input app APK could not be parsed. 172 InvalidMatrixDetails_MALFORMED_APK InvalidMatrixDetails = 2 173 // The input test APK could not be parsed. 174 InvalidMatrixDetails_MALFORMED_TEST_APK InvalidMatrixDetails = 3 175 // The AndroidManifest.xml could not be found. 176 InvalidMatrixDetails_NO_MANIFEST InvalidMatrixDetails = 4 177 // The APK manifest does not declare a package name. 178 InvalidMatrixDetails_NO_PACKAGE_NAME InvalidMatrixDetails = 5 179 // The APK application ID (aka package name) is invalid. 180 // See also 181 // https://developer.android.com/studio/build/application-id 182 InvalidMatrixDetails_INVALID_PACKAGE_NAME InvalidMatrixDetails = 31 183 // The test package and app package are the same. 184 InvalidMatrixDetails_TEST_SAME_AS_APP InvalidMatrixDetails = 6 185 // The test apk does not declare an instrumentation. 186 InvalidMatrixDetails_NO_INSTRUMENTATION InvalidMatrixDetails = 7 187 // The input app apk does not have a signature. 188 InvalidMatrixDetails_NO_SIGNATURE InvalidMatrixDetails = 20 189 // The test runner class specified by user or in the test APK's manifest file 190 // is not compatible with Android Test Orchestrator. 191 // Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or 192 // higher. 193 // Orchestrator can be disabled by using DO_NOT_USE_ORCHESTRATOR 194 // OrchestratorOption. 195 InvalidMatrixDetails_INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE InvalidMatrixDetails = 18 196 // The test APK does not contain the test runner class specified by user or in 197 // the manifest file. 198 // This can be caused by either of the following reasons: 199 // - the user provided a runner class name that's incorrect, or 200 // - the test runner isn't built into the test APK (might be in the app APK 201 // instead). 202 InvalidMatrixDetails_NO_TEST_RUNNER_CLASS InvalidMatrixDetails = 19 203 // A main launcher activity could not be found. 204 InvalidMatrixDetails_NO_LAUNCHER_ACTIVITY InvalidMatrixDetails = 8 205 // The app declares one or more permissions that are not allowed. 206 InvalidMatrixDetails_FORBIDDEN_PERMISSIONS InvalidMatrixDetails = 9 207 // There is a conflict in the provided robo_directives. 208 InvalidMatrixDetails_INVALID_ROBO_DIRECTIVES InvalidMatrixDetails = 10 209 // There is at least one invalid resource name in the provided 210 // robo directives 211 InvalidMatrixDetails_INVALID_RESOURCE_NAME InvalidMatrixDetails = 33 212 // Invalid definition of action in the robo directives 213 // (e.g. a click or ignore action includes an input text field) 214 InvalidMatrixDetails_INVALID_DIRECTIVE_ACTION InvalidMatrixDetails = 34 215 // There is no test loop intent filter, or the one that is given is 216 // not formatted correctly. 217 InvalidMatrixDetails_TEST_LOOP_INTENT_FILTER_NOT_FOUND InvalidMatrixDetails = 12 218 // The request contains a scenario label that was not declared in the 219 // manifest. 220 InvalidMatrixDetails_SCENARIO_LABEL_NOT_DECLARED InvalidMatrixDetails = 13 221 // There was an error when parsing a label's value. 222 InvalidMatrixDetails_SCENARIO_LABEL_MALFORMED InvalidMatrixDetails = 14 223 // The request contains a scenario number that was not declared in the 224 // manifest. 225 InvalidMatrixDetails_SCENARIO_NOT_DECLARED InvalidMatrixDetails = 15 226 // Device administrator applications are not allowed. 227 InvalidMatrixDetails_DEVICE_ADMIN_RECEIVER InvalidMatrixDetails = 17 228 // The zipped XCTest was malformed. The zip did not contain a single 229 // .xctestrun file and the contents of the DerivedData/Build/Products 230 // directory. 231 InvalidMatrixDetails_MALFORMED_XC_TEST_ZIP InvalidMatrixDetails = 11 232 // The zipped XCTest was built for the iOS simulator rather than for a 233 // physical device. 234 InvalidMatrixDetails_BUILT_FOR_IOS_SIMULATOR InvalidMatrixDetails = 24 235 // The .xctestrun file did not specify any test targets. 236 InvalidMatrixDetails_NO_TESTS_IN_XC_TEST_ZIP InvalidMatrixDetails = 25 237 // One or more of the test targets defined in the .xctestrun file specifies 238 // "UseDestinationArtifacts", which is disallowed. 239 InvalidMatrixDetails_USE_DESTINATION_ARTIFACTS InvalidMatrixDetails = 26 240 // XC tests which run on physical devices must have 241 // "IsAppHostedTestBundle" == "true" in the xctestrun file. 242 InvalidMatrixDetails_TEST_NOT_APP_HOSTED InvalidMatrixDetails = 28 243 // An Info.plist file in the XCTest zip could not be parsed. 244 InvalidMatrixDetails_PLIST_CANNOT_BE_PARSED InvalidMatrixDetails = 30 245 // The APK is marked as "testOnly". 246 // Deprecated and not currently used. 247 // 248 // Deprecated: Do not use. 249 InvalidMatrixDetails_TEST_ONLY_APK InvalidMatrixDetails = 21 250 // The input IPA could not be parsed. 251 InvalidMatrixDetails_MALFORMED_IPA InvalidMatrixDetails = 22 252 // The application doesn't register the game loop URL scheme. 253 InvalidMatrixDetails_MISSING_URL_SCHEME InvalidMatrixDetails = 35 254 // The iOS application bundle (.app) couldn't be processed. 255 InvalidMatrixDetails_MALFORMED_APP_BUNDLE InvalidMatrixDetails = 36 256 // APK contains no code. 257 // See also 258 // https://developer.android.com/guide/topics/manifest/application-element.html#code 259 InvalidMatrixDetails_NO_CODE_APK InvalidMatrixDetails = 23 260 // Either the provided input APK path was malformed, 261 // the APK file does not exist, or the user does not have permission to 262 // access the APK file. 263 InvalidMatrixDetails_INVALID_INPUT_APK InvalidMatrixDetails = 27 264 // APK is built for a preview SDK which is unsupported 265 InvalidMatrixDetails_INVALID_APK_PREVIEW_SDK InvalidMatrixDetails = 29 266) 267 268// Enum value maps for InvalidMatrixDetails. 269var ( 270 InvalidMatrixDetails_name = map[int32]string{ 271 0: "INVALID_MATRIX_DETAILS_UNSPECIFIED", 272 1: "DETAILS_UNAVAILABLE", 273 2: "MALFORMED_APK", 274 3: "MALFORMED_TEST_APK", 275 4: "NO_MANIFEST", 276 5: "NO_PACKAGE_NAME", 277 31: "INVALID_PACKAGE_NAME", 278 6: "TEST_SAME_AS_APP", 279 7: "NO_INSTRUMENTATION", 280 20: "NO_SIGNATURE", 281 18: "INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE", 282 19: "NO_TEST_RUNNER_CLASS", 283 8: "NO_LAUNCHER_ACTIVITY", 284 9: "FORBIDDEN_PERMISSIONS", 285 10: "INVALID_ROBO_DIRECTIVES", 286 33: "INVALID_RESOURCE_NAME", 287 34: "INVALID_DIRECTIVE_ACTION", 288 12: "TEST_LOOP_INTENT_FILTER_NOT_FOUND", 289 13: "SCENARIO_LABEL_NOT_DECLARED", 290 14: "SCENARIO_LABEL_MALFORMED", 291 15: "SCENARIO_NOT_DECLARED", 292 17: "DEVICE_ADMIN_RECEIVER", 293 11: "MALFORMED_XC_TEST_ZIP", 294 24: "BUILT_FOR_IOS_SIMULATOR", 295 25: "NO_TESTS_IN_XC_TEST_ZIP", 296 26: "USE_DESTINATION_ARTIFACTS", 297 28: "TEST_NOT_APP_HOSTED", 298 30: "PLIST_CANNOT_BE_PARSED", 299 21: "TEST_ONLY_APK", 300 22: "MALFORMED_IPA", 301 35: "MISSING_URL_SCHEME", 302 36: "MALFORMED_APP_BUNDLE", 303 23: "NO_CODE_APK", 304 27: "INVALID_INPUT_APK", 305 29: "INVALID_APK_PREVIEW_SDK", 306 } 307 InvalidMatrixDetails_value = map[string]int32{ 308 "INVALID_MATRIX_DETAILS_UNSPECIFIED": 0, 309 "DETAILS_UNAVAILABLE": 1, 310 "MALFORMED_APK": 2, 311 "MALFORMED_TEST_APK": 3, 312 "NO_MANIFEST": 4, 313 "NO_PACKAGE_NAME": 5, 314 "INVALID_PACKAGE_NAME": 31, 315 "TEST_SAME_AS_APP": 6, 316 "NO_INSTRUMENTATION": 7, 317 "NO_SIGNATURE": 20, 318 "INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE": 18, 319 "NO_TEST_RUNNER_CLASS": 19, 320 "NO_LAUNCHER_ACTIVITY": 8, 321 "FORBIDDEN_PERMISSIONS": 9, 322 "INVALID_ROBO_DIRECTIVES": 10, 323 "INVALID_RESOURCE_NAME": 33, 324 "INVALID_DIRECTIVE_ACTION": 34, 325 "TEST_LOOP_INTENT_FILTER_NOT_FOUND": 12, 326 "SCENARIO_LABEL_NOT_DECLARED": 13, 327 "SCENARIO_LABEL_MALFORMED": 14, 328 "SCENARIO_NOT_DECLARED": 15, 329 "DEVICE_ADMIN_RECEIVER": 17, 330 "MALFORMED_XC_TEST_ZIP": 11, 331 "BUILT_FOR_IOS_SIMULATOR": 24, 332 "NO_TESTS_IN_XC_TEST_ZIP": 25, 333 "USE_DESTINATION_ARTIFACTS": 26, 334 "TEST_NOT_APP_HOSTED": 28, 335 "PLIST_CANNOT_BE_PARSED": 30, 336 "TEST_ONLY_APK": 21, 337 "MALFORMED_IPA": 22, 338 "MISSING_URL_SCHEME": 35, 339 "MALFORMED_APP_BUNDLE": 36, 340 "NO_CODE_APK": 23, 341 "INVALID_INPUT_APK": 27, 342 "INVALID_APK_PREVIEW_SDK": 29, 343 } 344) 345 346func (x InvalidMatrixDetails) Enum() *InvalidMatrixDetails { 347 p := new(InvalidMatrixDetails) 348 *p = x 349 return p 350} 351 352func (x InvalidMatrixDetails) String() string { 353 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 354} 355 356func (InvalidMatrixDetails) Descriptor() protoreflect.EnumDescriptor { 357 return file_google_devtools_testing_v1_test_execution_proto_enumTypes[2].Descriptor() 358} 359 360func (InvalidMatrixDetails) Type() protoreflect.EnumType { 361 return &file_google_devtools_testing_v1_test_execution_proto_enumTypes[2] 362} 363 364func (x InvalidMatrixDetails) Number() protoreflect.EnumNumber { 365 return protoreflect.EnumNumber(x) 366} 367 368// Deprecated: Use InvalidMatrixDetails.Descriptor instead. 369func (InvalidMatrixDetails) EnumDescriptor() ([]byte, []int) { 370 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{2} 371} 372 373// The state (i.e., progress) of a test execution or matrix. 374type TestState int32 375 376const ( 377 // Do not use. For proto versioning only. 378 TestState_TEST_STATE_UNSPECIFIED TestState = 0 379 // The execution or matrix is being validated. 380 TestState_VALIDATING TestState = 8 381 // The execution or matrix is waiting for resources to become available. 382 TestState_PENDING TestState = 1 383 // The execution is currently being processed. 384 // 385 // Can only be set on an execution. 386 TestState_RUNNING TestState = 2 387 // The execution or matrix has terminated normally. 388 // 389 // On a matrix this means that the matrix level processing completed normally, 390 // but individual executions may be in an ERROR state. 391 TestState_FINISHED TestState = 3 392 // The execution or matrix has stopped because it encountered an 393 // infrastructure failure. 394 TestState_ERROR TestState = 4 395 // The execution was not run because it corresponds to a unsupported 396 // environment. 397 // 398 // Can only be set on an execution. 399 TestState_UNSUPPORTED_ENVIRONMENT TestState = 5 400 // The execution was not run because the provided inputs are incompatible with 401 // the requested environment. 402 // 403 // Example: requested AndroidVersion is lower than APK's minSdkVersion 404 // 405 // Can only be set on an execution. 406 TestState_INCOMPATIBLE_ENVIRONMENT TestState = 9 407 // The execution was not run because the provided inputs are incompatible with 408 // the requested architecture. 409 // 410 // Example: requested device does not support running the native code in 411 // the supplied APK 412 // 413 // Can only be set on an execution. 414 TestState_INCOMPATIBLE_ARCHITECTURE TestState = 10 415 // The user cancelled the execution. 416 // 417 // Can only be set on an execution. 418 TestState_CANCELLED TestState = 6 419 // The execution or matrix was not run because the provided inputs are not 420 // valid. 421 // 422 // Examples: input file is not of the expected type, is malformed/corrupt, or 423 // was flagged as malware 424 TestState_INVALID TestState = 7 425) 426 427// Enum value maps for TestState. 428var ( 429 TestState_name = map[int32]string{ 430 0: "TEST_STATE_UNSPECIFIED", 431 8: "VALIDATING", 432 1: "PENDING", 433 2: "RUNNING", 434 3: "FINISHED", 435 4: "ERROR", 436 5: "UNSUPPORTED_ENVIRONMENT", 437 9: "INCOMPATIBLE_ENVIRONMENT", 438 10: "INCOMPATIBLE_ARCHITECTURE", 439 6: "CANCELLED", 440 7: "INVALID", 441 } 442 TestState_value = map[string]int32{ 443 "TEST_STATE_UNSPECIFIED": 0, 444 "VALIDATING": 8, 445 "PENDING": 1, 446 "RUNNING": 2, 447 "FINISHED": 3, 448 "ERROR": 4, 449 "UNSUPPORTED_ENVIRONMENT": 5, 450 "INCOMPATIBLE_ENVIRONMENT": 9, 451 "INCOMPATIBLE_ARCHITECTURE": 10, 452 "CANCELLED": 6, 453 "INVALID": 7, 454 } 455) 456 457func (x TestState) Enum() *TestState { 458 p := new(TestState) 459 *p = x 460 return p 461} 462 463func (x TestState) String() string { 464 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 465} 466 467func (TestState) Descriptor() protoreflect.EnumDescriptor { 468 return file_google_devtools_testing_v1_test_execution_proto_enumTypes[3].Descriptor() 469} 470 471func (TestState) Type() protoreflect.EnumType { 472 return &file_google_devtools_testing_v1_test_execution_proto_enumTypes[3] 473} 474 475func (x TestState) Number() protoreflect.EnumNumber { 476 return protoreflect.EnumNumber(x) 477} 478 479// Deprecated: Use TestState.Descriptor instead. 480func (TestState) EnumDescriptor() ([]byte, []int) { 481 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{3} 482} 483 484// Outcome summary for a finished test matrix. 485type OutcomeSummary int32 486 487const ( 488 // Do not use. For proto versioning only. 489 OutcomeSummary_OUTCOME_SUMMARY_UNSPECIFIED OutcomeSummary = 0 490 // The test matrix run was successful, for instance: 491 // - All the test cases passed. 492 // - Robo did not detect a crash of the application under test. 493 OutcomeSummary_SUCCESS OutcomeSummary = 1 494 // A run failed, for instance: 495 // - One or more test case failed. 496 // - A test timed out. 497 // - The application under test crashed. 498 OutcomeSummary_FAILURE OutcomeSummary = 2 499 // Something unexpected happened. The run should still be considered 500 // unsuccessful but this is likely a transient problem and re-running the 501 // test might be successful. 502 OutcomeSummary_INCONCLUSIVE OutcomeSummary = 3 503 // All tests were skipped, for instance: 504 // - All device configurations were incompatible. 505 OutcomeSummary_SKIPPED OutcomeSummary = 4 506) 507 508// Enum value maps for OutcomeSummary. 509var ( 510 OutcomeSummary_name = map[int32]string{ 511 0: "OUTCOME_SUMMARY_UNSPECIFIED", 512 1: "SUCCESS", 513 2: "FAILURE", 514 3: "INCONCLUSIVE", 515 4: "SKIPPED", 516 } 517 OutcomeSummary_value = map[string]int32{ 518 "OUTCOME_SUMMARY_UNSPECIFIED": 0, 519 "SUCCESS": 1, 520 "FAILURE": 2, 521 "INCONCLUSIVE": 3, 522 "SKIPPED": 4, 523 } 524) 525 526func (x OutcomeSummary) Enum() *OutcomeSummary { 527 p := new(OutcomeSummary) 528 *p = x 529 return p 530} 531 532func (x OutcomeSummary) String() string { 533 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 534} 535 536func (OutcomeSummary) Descriptor() protoreflect.EnumDescriptor { 537 return file_google_devtools_testing_v1_test_execution_proto_enumTypes[4].Descriptor() 538} 539 540func (OutcomeSummary) Type() protoreflect.EnumType { 541 return &file_google_devtools_testing_v1_test_execution_proto_enumTypes[4] 542} 543 544func (x OutcomeSummary) Number() protoreflect.EnumNumber { 545 return protoreflect.EnumNumber(x) 546} 547 548// Deprecated: Use OutcomeSummary.Descriptor instead. 549func (OutcomeSummary) EnumDescriptor() ([]byte, []int) { 550 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{4} 551} 552 553// Possible invalid request reasons. 554type InvalidRequestDetail_Reason int32 555 556const ( 557 // No reason has been specified - the default. 558 InvalidRequestDetail_REASON_UNSPECIFIED InvalidRequestDetail_Reason = 0 559 // The request is not valid. 560 InvalidRequestDetail_REQUEST_INVALID InvalidRequestDetail_Reason = 1 561 // One or more of the resources specified in the request is too large. 562 InvalidRequestDetail_RESOURCE_TOO_BIG InvalidRequestDetail_Reason = 2 563 // One or more resources specified in the request cannot be found. 564 InvalidRequestDetail_RESOURCE_NOT_FOUND InvalidRequestDetail_Reason = 3 565 // This request is not (currently) supported. 566 InvalidRequestDetail_UNSUPPORTED InvalidRequestDetail_Reason = 4 567 // This request is not currently implemented. 568 InvalidRequestDetail_NOT_IMPLEMENTED InvalidRequestDetail_Reason = 5 569) 570 571// Enum value maps for InvalidRequestDetail_Reason. 572var ( 573 InvalidRequestDetail_Reason_name = map[int32]string{ 574 0: "REASON_UNSPECIFIED", 575 1: "REQUEST_INVALID", 576 2: "RESOURCE_TOO_BIG", 577 3: "RESOURCE_NOT_FOUND", 578 4: "UNSUPPORTED", 579 5: "NOT_IMPLEMENTED", 580 } 581 InvalidRequestDetail_Reason_value = map[string]int32{ 582 "REASON_UNSPECIFIED": 0, 583 "REQUEST_INVALID": 1, 584 "RESOURCE_TOO_BIG": 2, 585 "RESOURCE_NOT_FOUND": 3, 586 "UNSUPPORTED": 4, 587 "NOT_IMPLEMENTED": 5, 588 } 589) 590 591func (x InvalidRequestDetail_Reason) Enum() *InvalidRequestDetail_Reason { 592 p := new(InvalidRequestDetail_Reason) 593 *p = x 594 return p 595} 596 597func (x InvalidRequestDetail_Reason) String() string { 598 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 599} 600 601func (InvalidRequestDetail_Reason) Descriptor() protoreflect.EnumDescriptor { 602 return file_google_devtools_testing_v1_test_execution_proto_enumTypes[5].Descriptor() 603} 604 605func (InvalidRequestDetail_Reason) Type() protoreflect.EnumType { 606 return &file_google_devtools_testing_v1_test_execution_proto_enumTypes[5] 607} 608 609func (x InvalidRequestDetail_Reason) Number() protoreflect.EnumNumber { 610 return protoreflect.EnumNumber(x) 611} 612 613// Deprecated: Use InvalidRequestDetail_Reason.Descriptor instead. 614func (InvalidRequestDetail_Reason) EnumDescriptor() ([]byte, []int) { 615 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{40, 0} 616} 617 618// TestMatrix captures all details about a test. It contains the environment 619// configuration, test specification, test executions and overall state and 620// outcome. 621type TestMatrix struct { 622 state protoimpl.MessageState 623 sizeCache protoimpl.SizeCache 624 unknownFields protoimpl.UnknownFields 625 626 // Output only. Unique id set by the service. 627 TestMatrixId string `protobuf:"bytes,1,opt,name=test_matrix_id,json=testMatrixId,proto3" json:"test_matrix_id,omitempty"` 628 // The cloud project that owns the test matrix. 629 ProjectId string `protobuf:"bytes,7,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` 630 // Information about the client which invoked the test. 631 ClientInfo *ClientInfo `protobuf:"bytes,10,opt,name=client_info,json=clientInfo,proto3" json:"client_info,omitempty"` 632 // Required. How to run the test. 633 TestSpecification *TestSpecification `protobuf:"bytes,3,opt,name=test_specification,json=testSpecification,proto3" json:"test_specification,omitempty"` 634 // Required. The devices the tests are being executed on. 635 EnvironmentMatrix *EnvironmentMatrix `protobuf:"bytes,4,opt,name=environment_matrix,json=environmentMatrix,proto3" json:"environment_matrix,omitempty"` 636 // Output only. The list of test executions that the service creates for 637 // this matrix. 638 TestExecutions []*TestExecution `protobuf:"bytes,5,rep,name=test_executions,json=testExecutions,proto3" json:"test_executions,omitempty"` 639 // Required. Where the results for the matrix are written. 640 ResultStorage *ResultStorage `protobuf:"bytes,6,opt,name=result_storage,json=resultStorage,proto3" json:"result_storage,omitempty"` 641 // Output only. Indicates the current progress of the test matrix. 642 State TestState `protobuf:"varint,8,opt,name=state,proto3,enum=google.devtools.testing.v1.TestState" json:"state,omitempty"` 643 // Output only. The time this test matrix was initially created. 644 Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"` 645 // Output only. Describes why the matrix is considered invalid. 646 // Only useful for matrices in the INVALID state. 647 InvalidMatrixDetails InvalidMatrixDetails `protobuf:"varint,11,opt,name=invalid_matrix_details,json=invalidMatrixDetails,proto3,enum=google.devtools.testing.v1.InvalidMatrixDetails" json:"invalid_matrix_details,omitempty"` 648 // The number of times a TestExecution should be re-attempted if one or more 649 // of its test cases fail for any reason. 650 // The maximum number of reruns allowed is 10. 651 // 652 // Default is 0, which implies no reruns. 653 FlakyTestAttempts int32 `protobuf:"varint,13,opt,name=flaky_test_attempts,json=flakyTestAttempts,proto3" json:"flaky_test_attempts,omitempty"` 654 // Output Only. The overall outcome of the test. 655 // Only set when the test matrix state is FINISHED. 656 OutcomeSummary OutcomeSummary `protobuf:"varint,14,opt,name=outcome_summary,json=outcomeSummary,proto3,enum=google.devtools.testing.v1.OutcomeSummary" json:"outcome_summary,omitempty"` 657 // If true, only a single attempt at most will be made to run each 658 // execution/shard in the matrix. Flaky test attempts are not affected. 659 // 660 // Normally, 2 or more attempts are made if a potential infrastructure issue 661 // is detected. 662 // 663 // This feature is for latency sensitive workloads. The incidence of 664 // execution failures may be significantly greater for fail-fast matrices 665 // and support is more limited because of that expectation. 666 FailFast bool `protobuf:"varint,17,opt,name=fail_fast,json=failFast,proto3" json:"fail_fast,omitempty"` 667} 668 669func (x *TestMatrix) Reset() { 670 *x = TestMatrix{} 671 if protoimpl.UnsafeEnabled { 672 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[0] 673 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 674 ms.StoreMessageInfo(mi) 675 } 676} 677 678func (x *TestMatrix) String() string { 679 return protoimpl.X.MessageStringOf(x) 680} 681 682func (*TestMatrix) ProtoMessage() {} 683 684func (x *TestMatrix) ProtoReflect() protoreflect.Message { 685 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[0] 686 if protoimpl.UnsafeEnabled && x != nil { 687 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 688 if ms.LoadMessageInfo() == nil { 689 ms.StoreMessageInfo(mi) 690 } 691 return ms 692 } 693 return mi.MessageOf(x) 694} 695 696// Deprecated: Use TestMatrix.ProtoReflect.Descriptor instead. 697func (*TestMatrix) Descriptor() ([]byte, []int) { 698 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{0} 699} 700 701func (x *TestMatrix) GetTestMatrixId() string { 702 if x != nil { 703 return x.TestMatrixId 704 } 705 return "" 706} 707 708func (x *TestMatrix) GetProjectId() string { 709 if x != nil { 710 return x.ProjectId 711 } 712 return "" 713} 714 715func (x *TestMatrix) GetClientInfo() *ClientInfo { 716 if x != nil { 717 return x.ClientInfo 718 } 719 return nil 720} 721 722func (x *TestMatrix) GetTestSpecification() *TestSpecification { 723 if x != nil { 724 return x.TestSpecification 725 } 726 return nil 727} 728 729func (x *TestMatrix) GetEnvironmentMatrix() *EnvironmentMatrix { 730 if x != nil { 731 return x.EnvironmentMatrix 732 } 733 return nil 734} 735 736func (x *TestMatrix) GetTestExecutions() []*TestExecution { 737 if x != nil { 738 return x.TestExecutions 739 } 740 return nil 741} 742 743func (x *TestMatrix) GetResultStorage() *ResultStorage { 744 if x != nil { 745 return x.ResultStorage 746 } 747 return nil 748} 749 750func (x *TestMatrix) GetState() TestState { 751 if x != nil { 752 return x.State 753 } 754 return TestState_TEST_STATE_UNSPECIFIED 755} 756 757func (x *TestMatrix) GetTimestamp() *timestamppb.Timestamp { 758 if x != nil { 759 return x.Timestamp 760 } 761 return nil 762} 763 764func (x *TestMatrix) GetInvalidMatrixDetails() InvalidMatrixDetails { 765 if x != nil { 766 return x.InvalidMatrixDetails 767 } 768 return InvalidMatrixDetails_INVALID_MATRIX_DETAILS_UNSPECIFIED 769} 770 771func (x *TestMatrix) GetFlakyTestAttempts() int32 { 772 if x != nil { 773 return x.FlakyTestAttempts 774 } 775 return 0 776} 777 778func (x *TestMatrix) GetOutcomeSummary() OutcomeSummary { 779 if x != nil { 780 return x.OutcomeSummary 781 } 782 return OutcomeSummary_OUTCOME_SUMMARY_UNSPECIFIED 783} 784 785func (x *TestMatrix) GetFailFast() bool { 786 if x != nil { 787 return x.FailFast 788 } 789 return false 790} 791 792// A single test executed in a single environment. 793type TestExecution struct { 794 state protoimpl.MessageState 795 sizeCache protoimpl.SizeCache 796 unknownFields protoimpl.UnknownFields 797 798 // Output only. Unique id set by the service. 799 Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` 800 // Output only. Id of the containing TestMatrix. 801 MatrixId string `protobuf:"bytes,9,opt,name=matrix_id,json=matrixId,proto3" json:"matrix_id,omitempty"` 802 // Output only. The cloud project that owns the test execution. 803 ProjectId string `protobuf:"bytes,10,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` 804 // Output only. How to run the test. 805 TestSpecification *TestSpecification `protobuf:"bytes,3,opt,name=test_specification,json=testSpecification,proto3" json:"test_specification,omitempty"` 806 // Output only. Details about the shard. 807 Shard *Shard `protobuf:"bytes,12,opt,name=shard,proto3" json:"shard,omitempty"` 808 // Output only. How the host machine(s) are configured. 809 Environment *Environment `protobuf:"bytes,4,opt,name=environment,proto3" json:"environment,omitempty"` 810 // Output only. Indicates the current progress of the test execution 811 // (e.g., FINISHED). 812 State TestState `protobuf:"varint,5,opt,name=state,proto3,enum=google.devtools.testing.v1.TestState" json:"state,omitempty"` 813 // Output only. Where the results for this execution are written. 814 ToolResultsStep *ToolResultsStep `protobuf:"bytes,11,opt,name=tool_results_step,json=toolResultsStep,proto3" json:"tool_results_step,omitempty"` 815 // Output only. The time this test execution was initially created. 816 Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"` 817 // Output only. Additional details about the running test. 818 TestDetails *TestDetails `protobuf:"bytes,8,opt,name=test_details,json=testDetails,proto3" json:"test_details,omitempty"` 819} 820 821func (x *TestExecution) Reset() { 822 *x = TestExecution{} 823 if protoimpl.UnsafeEnabled { 824 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[1] 825 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 826 ms.StoreMessageInfo(mi) 827 } 828} 829 830func (x *TestExecution) String() string { 831 return protoimpl.X.MessageStringOf(x) 832} 833 834func (*TestExecution) ProtoMessage() {} 835 836func (x *TestExecution) ProtoReflect() protoreflect.Message { 837 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[1] 838 if protoimpl.UnsafeEnabled && x != nil { 839 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 840 if ms.LoadMessageInfo() == nil { 841 ms.StoreMessageInfo(mi) 842 } 843 return ms 844 } 845 return mi.MessageOf(x) 846} 847 848// Deprecated: Use TestExecution.ProtoReflect.Descriptor instead. 849func (*TestExecution) Descriptor() ([]byte, []int) { 850 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{1} 851} 852 853func (x *TestExecution) GetId() string { 854 if x != nil { 855 return x.Id 856 } 857 return "" 858} 859 860func (x *TestExecution) GetMatrixId() string { 861 if x != nil { 862 return x.MatrixId 863 } 864 return "" 865} 866 867func (x *TestExecution) GetProjectId() string { 868 if x != nil { 869 return x.ProjectId 870 } 871 return "" 872} 873 874func (x *TestExecution) GetTestSpecification() *TestSpecification { 875 if x != nil { 876 return x.TestSpecification 877 } 878 return nil 879} 880 881func (x *TestExecution) GetShard() *Shard { 882 if x != nil { 883 return x.Shard 884 } 885 return nil 886} 887 888func (x *TestExecution) GetEnvironment() *Environment { 889 if x != nil { 890 return x.Environment 891 } 892 return nil 893} 894 895func (x *TestExecution) GetState() TestState { 896 if x != nil { 897 return x.State 898 } 899 return TestState_TEST_STATE_UNSPECIFIED 900} 901 902func (x *TestExecution) GetToolResultsStep() *ToolResultsStep { 903 if x != nil { 904 return x.ToolResultsStep 905 } 906 return nil 907} 908 909func (x *TestExecution) GetTimestamp() *timestamppb.Timestamp { 910 if x != nil { 911 return x.Timestamp 912 } 913 return nil 914} 915 916func (x *TestExecution) GetTestDetails() *TestDetails { 917 if x != nil { 918 return x.TestDetails 919 } 920 return nil 921} 922 923// A description of how to run the test. 924type TestSpecification struct { 925 state protoimpl.MessageState 926 sizeCache protoimpl.SizeCache 927 unknownFields protoimpl.UnknownFields 928 929 // Max time a test execution is allowed to run before it is 930 // automatically cancelled. 931 // The default value is 5 min. 932 TestTimeout *durationpb.Duration `protobuf:"bytes,1,opt,name=test_timeout,json=testTimeout,proto3" json:"test_timeout,omitempty"` 933 // Test setup requirements. 934 // 935 // Types that are assignable to Setup: 936 // *TestSpecification_TestSetup 937 // *TestSpecification_IosTestSetup 938 Setup isTestSpecification_Setup `protobuf_oneof:"setup"` 939 // Required. The type of test to run. 940 // 941 // Types that are assignable to Test: 942 // *TestSpecification_AndroidInstrumentationTest 943 // *TestSpecification_AndroidRoboTest 944 // *TestSpecification_AndroidTestLoop 945 // *TestSpecification_IosXcTest 946 // *TestSpecification_IosTestLoop 947 Test isTestSpecification_Test `protobuf_oneof:"test"` 948 // Disables video recording. May reduce test latency. 949 DisableVideoRecording bool `protobuf:"varint,10,opt,name=disable_video_recording,json=disableVideoRecording,proto3" json:"disable_video_recording,omitempty"` 950 // Disables performance metrics recording. May reduce test latency. 951 DisablePerformanceMetrics bool `protobuf:"varint,11,opt,name=disable_performance_metrics,json=disablePerformanceMetrics,proto3" json:"disable_performance_metrics,omitempty"` 952} 953 954func (x *TestSpecification) Reset() { 955 *x = TestSpecification{} 956 if protoimpl.UnsafeEnabled { 957 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[2] 958 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 959 ms.StoreMessageInfo(mi) 960 } 961} 962 963func (x *TestSpecification) String() string { 964 return protoimpl.X.MessageStringOf(x) 965} 966 967func (*TestSpecification) ProtoMessage() {} 968 969func (x *TestSpecification) ProtoReflect() protoreflect.Message { 970 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[2] 971 if protoimpl.UnsafeEnabled && x != nil { 972 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 973 if ms.LoadMessageInfo() == nil { 974 ms.StoreMessageInfo(mi) 975 } 976 return ms 977 } 978 return mi.MessageOf(x) 979} 980 981// Deprecated: Use TestSpecification.ProtoReflect.Descriptor instead. 982func (*TestSpecification) Descriptor() ([]byte, []int) { 983 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{2} 984} 985 986func (x *TestSpecification) GetTestTimeout() *durationpb.Duration { 987 if x != nil { 988 return x.TestTimeout 989 } 990 return nil 991} 992 993func (m *TestSpecification) GetSetup() isTestSpecification_Setup { 994 if m != nil { 995 return m.Setup 996 } 997 return nil 998} 999 1000func (x *TestSpecification) GetTestSetup() *TestSetup { 1001 if x, ok := x.GetSetup().(*TestSpecification_TestSetup); ok { 1002 return x.TestSetup 1003 } 1004 return nil 1005} 1006 1007func (x *TestSpecification) GetIosTestSetup() *IosTestSetup { 1008 if x, ok := x.GetSetup().(*TestSpecification_IosTestSetup); ok { 1009 return x.IosTestSetup 1010 } 1011 return nil 1012} 1013 1014func (m *TestSpecification) GetTest() isTestSpecification_Test { 1015 if m != nil { 1016 return m.Test 1017 } 1018 return nil 1019} 1020 1021func (x *TestSpecification) GetAndroidInstrumentationTest() *AndroidInstrumentationTest { 1022 if x, ok := x.GetTest().(*TestSpecification_AndroidInstrumentationTest); ok { 1023 return x.AndroidInstrumentationTest 1024 } 1025 return nil 1026} 1027 1028func (x *TestSpecification) GetAndroidRoboTest() *AndroidRoboTest { 1029 if x, ok := x.GetTest().(*TestSpecification_AndroidRoboTest); ok { 1030 return x.AndroidRoboTest 1031 } 1032 return nil 1033} 1034 1035func (x *TestSpecification) GetAndroidTestLoop() *AndroidTestLoop { 1036 if x, ok := x.GetTest().(*TestSpecification_AndroidTestLoop); ok { 1037 return x.AndroidTestLoop 1038 } 1039 return nil 1040} 1041 1042func (x *TestSpecification) GetIosXcTest() *IosXcTest { 1043 if x, ok := x.GetTest().(*TestSpecification_IosXcTest); ok { 1044 return x.IosXcTest 1045 } 1046 return nil 1047} 1048 1049func (x *TestSpecification) GetIosTestLoop() *IosTestLoop { 1050 if x, ok := x.GetTest().(*TestSpecification_IosTestLoop); ok { 1051 return x.IosTestLoop 1052 } 1053 return nil 1054} 1055 1056func (x *TestSpecification) GetDisableVideoRecording() bool { 1057 if x != nil { 1058 return x.DisableVideoRecording 1059 } 1060 return false 1061} 1062 1063func (x *TestSpecification) GetDisablePerformanceMetrics() bool { 1064 if x != nil { 1065 return x.DisablePerformanceMetrics 1066 } 1067 return false 1068} 1069 1070type isTestSpecification_Setup interface { 1071 isTestSpecification_Setup() 1072} 1073 1074type TestSpecification_TestSetup struct { 1075 // Test setup requirements for Android e.g. files to install, bootstrap 1076 // scripts. 1077 TestSetup *TestSetup `protobuf:"bytes,6,opt,name=test_setup,json=testSetup,proto3,oneof"` 1078} 1079 1080type TestSpecification_IosTestSetup struct { 1081 // Test setup requirements for iOS. 1082 IosTestSetup *IosTestSetup `protobuf:"bytes,14,opt,name=ios_test_setup,json=iosTestSetup,proto3,oneof"` 1083} 1084 1085func (*TestSpecification_TestSetup) isTestSpecification_Setup() {} 1086 1087func (*TestSpecification_IosTestSetup) isTestSpecification_Setup() {} 1088 1089type isTestSpecification_Test interface { 1090 isTestSpecification_Test() 1091} 1092 1093type TestSpecification_AndroidInstrumentationTest struct { 1094 // An Android instrumentation test. 1095 AndroidInstrumentationTest *AndroidInstrumentationTest `protobuf:"bytes,2,opt,name=android_instrumentation_test,json=androidInstrumentationTest,proto3,oneof"` 1096} 1097 1098type TestSpecification_AndroidRoboTest struct { 1099 // An Android robo test. 1100 AndroidRoboTest *AndroidRoboTest `protobuf:"bytes,3,opt,name=android_robo_test,json=androidRoboTest,proto3,oneof"` 1101} 1102 1103type TestSpecification_AndroidTestLoop struct { 1104 // An Android Application with a Test Loop. 1105 AndroidTestLoop *AndroidTestLoop `protobuf:"bytes,9,opt,name=android_test_loop,json=androidTestLoop,proto3,oneof"` 1106} 1107 1108type TestSpecification_IosXcTest struct { 1109 // An iOS XCTest, via an .xctestrun file. 1110 IosXcTest *IosXcTest `protobuf:"bytes,13,opt,name=ios_xc_test,json=iosXcTest,proto3,oneof"` 1111} 1112 1113type TestSpecification_IosTestLoop struct { 1114 // An iOS application with a test loop. 1115 IosTestLoop *IosTestLoop `protobuf:"bytes,15,opt,name=ios_test_loop,json=iosTestLoop,proto3,oneof"` 1116} 1117 1118func (*TestSpecification_AndroidInstrumentationTest) isTestSpecification_Test() {} 1119 1120func (*TestSpecification_AndroidRoboTest) isTestSpecification_Test() {} 1121 1122func (*TestSpecification_AndroidTestLoop) isTestSpecification_Test() {} 1123 1124func (*TestSpecification_IosXcTest) isTestSpecification_Test() {} 1125 1126func (*TestSpecification_IosTestLoop) isTestSpecification_Test() {} 1127 1128type SystraceSetup struct { 1129 state protoimpl.MessageState 1130 sizeCache protoimpl.SizeCache 1131 unknownFields protoimpl.UnknownFields 1132 1133 // Systrace duration in seconds. 1134 // Should be between 1 and 30 seconds. 0 disables systrace. 1135 DurationSeconds int32 `protobuf:"varint,1,opt,name=duration_seconds,json=durationSeconds,proto3" json:"duration_seconds,omitempty"` 1136} 1137 1138func (x *SystraceSetup) Reset() { 1139 *x = SystraceSetup{} 1140 if protoimpl.UnsafeEnabled { 1141 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[3] 1142 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1143 ms.StoreMessageInfo(mi) 1144 } 1145} 1146 1147func (x *SystraceSetup) String() string { 1148 return protoimpl.X.MessageStringOf(x) 1149} 1150 1151func (*SystraceSetup) ProtoMessage() {} 1152 1153func (x *SystraceSetup) ProtoReflect() protoreflect.Message { 1154 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[3] 1155 if protoimpl.UnsafeEnabled && x != nil { 1156 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1157 if ms.LoadMessageInfo() == nil { 1158 ms.StoreMessageInfo(mi) 1159 } 1160 return ms 1161 } 1162 return mi.MessageOf(x) 1163} 1164 1165// Deprecated: Use SystraceSetup.ProtoReflect.Descriptor instead. 1166func (*SystraceSetup) Descriptor() ([]byte, []int) { 1167 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{3} 1168} 1169 1170func (x *SystraceSetup) GetDurationSeconds() int32 { 1171 if x != nil { 1172 return x.DurationSeconds 1173 } 1174 return 0 1175} 1176 1177// A description of how to set up the Android device prior to running the test. 1178type TestSetup struct { 1179 state protoimpl.MessageState 1180 sizeCache protoimpl.SizeCache 1181 unknownFields protoimpl.UnknownFields 1182 1183 // List of files to push to the device before starting the test. 1184 FilesToPush []*DeviceFile `protobuf:"bytes,1,rep,name=files_to_push,json=filesToPush,proto3" json:"files_to_push,omitempty"` 1185 // List of directories on the device to upload to GCS at the end of the test; 1186 // they must be absolute paths under /sdcard, /storage or /data/local/tmp. 1187 // Path names are restricted to characters a-z A-Z 0-9 _ - . + and / 1188 // 1189 // Note: The paths /sdcard and /data will be made available and treated as 1190 // implicit path substitutions. E.g. if /sdcard on a particular device does 1191 // not map to external storage, the system will replace it with the external 1192 // storage path prefix for that device. 1193 DirectoriesToPull []string `protobuf:"bytes,2,rep,name=directories_to_pull,json=directoriesToPull,proto3" json:"directories_to_pull,omitempty"` 1194 // APKs to install in addition to those being directly tested. 1195 // Currently capped at 100. 1196 AdditionalApks []*Apk `protobuf:"bytes,3,rep,name=additional_apks,json=additionalApks,proto3" json:"additional_apks,omitempty"` 1197 // The device will be logged in on this account for the duration of the test. 1198 Account *Account `protobuf:"bytes,4,opt,name=account,proto3" json:"account,omitempty"` 1199 // The network traffic profile used for running the test. 1200 // Available network profiles can be queried by using the 1201 // NETWORK_CONFIGURATION environment type when calling 1202 // TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. 1203 NetworkProfile string `protobuf:"bytes,5,opt,name=network_profile,json=networkProfile,proto3" json:"network_profile,omitempty"` 1204 // Environment variables to set for the test (only applicable for 1205 // instrumentation tests). 1206 EnvironmentVariables []*EnvironmentVariable `protobuf:"bytes,6,rep,name=environment_variables,json=environmentVariables,proto3" json:"environment_variables,omitempty"` 1207 // Systrace configuration for the run. 1208 // If set a systrace will be taken, starting on test start and lasting for the 1209 // configured duration. The systrace file thus obtained is put in the results 1210 // bucket together with the other artifacts from the run. 1211 Systrace *SystraceSetup `protobuf:"bytes,9,opt,name=systrace,proto3" json:"systrace,omitempty"` 1212 // Whether to prevent all runtime permissions to be granted at app install 1213 DontAutograntPermissions bool `protobuf:"varint,23,opt,name=dont_autogrant_permissions,json=dontAutograntPermissions,proto3" json:"dont_autogrant_permissions,omitempty"` 1214} 1215 1216func (x *TestSetup) Reset() { 1217 *x = TestSetup{} 1218 if protoimpl.UnsafeEnabled { 1219 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[4] 1220 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1221 ms.StoreMessageInfo(mi) 1222 } 1223} 1224 1225func (x *TestSetup) String() string { 1226 return protoimpl.X.MessageStringOf(x) 1227} 1228 1229func (*TestSetup) ProtoMessage() {} 1230 1231func (x *TestSetup) ProtoReflect() protoreflect.Message { 1232 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[4] 1233 if protoimpl.UnsafeEnabled && x != nil { 1234 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1235 if ms.LoadMessageInfo() == nil { 1236 ms.StoreMessageInfo(mi) 1237 } 1238 return ms 1239 } 1240 return mi.MessageOf(x) 1241} 1242 1243// Deprecated: Use TestSetup.ProtoReflect.Descriptor instead. 1244func (*TestSetup) Descriptor() ([]byte, []int) { 1245 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{4} 1246} 1247 1248func (x *TestSetup) GetFilesToPush() []*DeviceFile { 1249 if x != nil { 1250 return x.FilesToPush 1251 } 1252 return nil 1253} 1254 1255func (x *TestSetup) GetDirectoriesToPull() []string { 1256 if x != nil { 1257 return x.DirectoriesToPull 1258 } 1259 return nil 1260} 1261 1262func (x *TestSetup) GetAdditionalApks() []*Apk { 1263 if x != nil { 1264 return x.AdditionalApks 1265 } 1266 return nil 1267} 1268 1269func (x *TestSetup) GetAccount() *Account { 1270 if x != nil { 1271 return x.Account 1272 } 1273 return nil 1274} 1275 1276func (x *TestSetup) GetNetworkProfile() string { 1277 if x != nil { 1278 return x.NetworkProfile 1279 } 1280 return "" 1281} 1282 1283func (x *TestSetup) GetEnvironmentVariables() []*EnvironmentVariable { 1284 if x != nil { 1285 return x.EnvironmentVariables 1286 } 1287 return nil 1288} 1289 1290func (x *TestSetup) GetSystrace() *SystraceSetup { 1291 if x != nil { 1292 return x.Systrace 1293 } 1294 return nil 1295} 1296 1297func (x *TestSetup) GetDontAutograntPermissions() bool { 1298 if x != nil { 1299 return x.DontAutograntPermissions 1300 } 1301 return false 1302} 1303 1304// A description of how to set up an iOS device prior to running the test. 1305type IosTestSetup struct { 1306 state protoimpl.MessageState 1307 sizeCache protoimpl.SizeCache 1308 unknownFields protoimpl.UnknownFields 1309 1310 // The network traffic profile used for running the test. 1311 // Available network profiles can be queried by using the 1312 // NETWORK_CONFIGURATION environment type when calling 1313 // TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog. 1314 NetworkProfile string `protobuf:"bytes,1,opt,name=network_profile,json=networkProfile,proto3" json:"network_profile,omitempty"` 1315 // iOS apps to install in addition to those being directly tested. 1316 AdditionalIpas []*FileReference `protobuf:"bytes,2,rep,name=additional_ipas,json=additionalIpas,proto3" json:"additional_ipas,omitempty"` 1317 // List of files to push to the device before starting the test. 1318 PushFiles []*IosDeviceFile `protobuf:"bytes,3,rep,name=push_files,json=pushFiles,proto3" json:"push_files,omitempty"` 1319 // List of directories on the device to upload to Cloud Storage at the end of 1320 // the test. 1321 // 1322 // Directories should either be in a shared directory 1323 // (e.g. /private/var/mobile/Media) or within an accessible directory inside 1324 // the app's filesystem (e.g. /Documents) by specifying the bundle id. 1325 PullDirectories []*IosDeviceFile `protobuf:"bytes,4,rep,name=pull_directories,json=pullDirectories,proto3" json:"pull_directories,omitempty"` 1326} 1327 1328func (x *IosTestSetup) Reset() { 1329 *x = IosTestSetup{} 1330 if protoimpl.UnsafeEnabled { 1331 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[5] 1332 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1333 ms.StoreMessageInfo(mi) 1334 } 1335} 1336 1337func (x *IosTestSetup) String() string { 1338 return protoimpl.X.MessageStringOf(x) 1339} 1340 1341func (*IosTestSetup) ProtoMessage() {} 1342 1343func (x *IosTestSetup) ProtoReflect() protoreflect.Message { 1344 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[5] 1345 if protoimpl.UnsafeEnabled && x != nil { 1346 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1347 if ms.LoadMessageInfo() == nil { 1348 ms.StoreMessageInfo(mi) 1349 } 1350 return ms 1351 } 1352 return mi.MessageOf(x) 1353} 1354 1355// Deprecated: Use IosTestSetup.ProtoReflect.Descriptor instead. 1356func (*IosTestSetup) Descriptor() ([]byte, []int) { 1357 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{5} 1358} 1359 1360func (x *IosTestSetup) GetNetworkProfile() string { 1361 if x != nil { 1362 return x.NetworkProfile 1363 } 1364 return "" 1365} 1366 1367func (x *IosTestSetup) GetAdditionalIpas() []*FileReference { 1368 if x != nil { 1369 return x.AdditionalIpas 1370 } 1371 return nil 1372} 1373 1374func (x *IosTestSetup) GetPushFiles() []*IosDeviceFile { 1375 if x != nil { 1376 return x.PushFiles 1377 } 1378 return nil 1379} 1380 1381func (x *IosTestSetup) GetPullDirectories() []*IosDeviceFile { 1382 if x != nil { 1383 return x.PullDirectories 1384 } 1385 return nil 1386} 1387 1388// A key-value pair passed as an environment variable to the test. 1389type EnvironmentVariable struct { 1390 state protoimpl.MessageState 1391 sizeCache protoimpl.SizeCache 1392 unknownFields protoimpl.UnknownFields 1393 1394 // Key for the environment variable. 1395 Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` 1396 // Value for the environment variable. 1397 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 1398} 1399 1400func (x *EnvironmentVariable) Reset() { 1401 *x = EnvironmentVariable{} 1402 if protoimpl.UnsafeEnabled { 1403 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[6] 1404 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1405 ms.StoreMessageInfo(mi) 1406 } 1407} 1408 1409func (x *EnvironmentVariable) String() string { 1410 return protoimpl.X.MessageStringOf(x) 1411} 1412 1413func (*EnvironmentVariable) ProtoMessage() {} 1414 1415func (x *EnvironmentVariable) ProtoReflect() protoreflect.Message { 1416 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[6] 1417 if protoimpl.UnsafeEnabled && x != nil { 1418 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1419 if ms.LoadMessageInfo() == nil { 1420 ms.StoreMessageInfo(mi) 1421 } 1422 return ms 1423 } 1424 return mi.MessageOf(x) 1425} 1426 1427// Deprecated: Use EnvironmentVariable.ProtoReflect.Descriptor instead. 1428func (*EnvironmentVariable) Descriptor() ([]byte, []int) { 1429 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{6} 1430} 1431 1432func (x *EnvironmentVariable) GetKey() string { 1433 if x != nil { 1434 return x.Key 1435 } 1436 return "" 1437} 1438 1439func (x *EnvironmentVariable) GetValue() string { 1440 if x != nil { 1441 return x.Value 1442 } 1443 return "" 1444} 1445 1446// Identifies an account and how to log into it. 1447type Account struct { 1448 state protoimpl.MessageState 1449 sizeCache protoimpl.SizeCache 1450 unknownFields protoimpl.UnknownFields 1451 1452 // Required. The type of account, based what it's for (e.g. Google) and what 1453 // its login mechanism is (e.g. username and password). 1454 // 1455 // Types that are assignable to AccountType: 1456 // *Account_GoogleAuto 1457 AccountType isAccount_AccountType `protobuf_oneof:"account_type"` 1458} 1459 1460func (x *Account) Reset() { 1461 *x = Account{} 1462 if protoimpl.UnsafeEnabled { 1463 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[7] 1464 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1465 ms.StoreMessageInfo(mi) 1466 } 1467} 1468 1469func (x *Account) String() string { 1470 return protoimpl.X.MessageStringOf(x) 1471} 1472 1473func (*Account) ProtoMessage() {} 1474 1475func (x *Account) ProtoReflect() protoreflect.Message { 1476 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[7] 1477 if protoimpl.UnsafeEnabled && x != nil { 1478 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1479 if ms.LoadMessageInfo() == nil { 1480 ms.StoreMessageInfo(mi) 1481 } 1482 return ms 1483 } 1484 return mi.MessageOf(x) 1485} 1486 1487// Deprecated: Use Account.ProtoReflect.Descriptor instead. 1488func (*Account) Descriptor() ([]byte, []int) { 1489 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{7} 1490} 1491 1492func (m *Account) GetAccountType() isAccount_AccountType { 1493 if m != nil { 1494 return m.AccountType 1495 } 1496 return nil 1497} 1498 1499func (x *Account) GetGoogleAuto() *GoogleAuto { 1500 if x, ok := x.GetAccountType().(*Account_GoogleAuto); ok { 1501 return x.GoogleAuto 1502 } 1503 return nil 1504} 1505 1506type isAccount_AccountType interface { 1507 isAccount_AccountType() 1508} 1509 1510type Account_GoogleAuto struct { 1511 // An automatic google login account. 1512 GoogleAuto *GoogleAuto `protobuf:"bytes,1,opt,name=google_auto,json=googleAuto,proto3,oneof"` 1513} 1514 1515func (*Account_GoogleAuto) isAccount_AccountType() {} 1516 1517// Enables automatic Google account login. 1518// If set, the service automatically generates a Google test account and adds 1519// it to the device, before executing the test. Note that test accounts might be 1520// reused. 1521// Many applications show their full set of functionalities when an account is 1522// present on the device. Logging into the device with these generated accounts 1523// allows testing more functionalities. 1524type GoogleAuto struct { 1525 state protoimpl.MessageState 1526 sizeCache protoimpl.SizeCache 1527 unknownFields protoimpl.UnknownFields 1528} 1529 1530func (x *GoogleAuto) Reset() { 1531 *x = GoogleAuto{} 1532 if protoimpl.UnsafeEnabled { 1533 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[8] 1534 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1535 ms.StoreMessageInfo(mi) 1536 } 1537} 1538 1539func (x *GoogleAuto) String() string { 1540 return protoimpl.X.MessageStringOf(x) 1541} 1542 1543func (*GoogleAuto) ProtoMessage() {} 1544 1545func (x *GoogleAuto) ProtoReflect() protoreflect.Message { 1546 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[8] 1547 if protoimpl.UnsafeEnabled && x != nil { 1548 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1549 if ms.LoadMessageInfo() == nil { 1550 ms.StoreMessageInfo(mi) 1551 } 1552 return ms 1553 } 1554 return mi.MessageOf(x) 1555} 1556 1557// Deprecated: Use GoogleAuto.ProtoReflect.Descriptor instead. 1558func (*GoogleAuto) Descriptor() ([]byte, []int) { 1559 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{8} 1560} 1561 1562// An Android package file to install. 1563type Apk struct { 1564 state protoimpl.MessageState 1565 sizeCache protoimpl.SizeCache 1566 unknownFields protoimpl.UnknownFields 1567 1568 // The path to an APK to be installed on the device before the test begins. 1569 Location *FileReference `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"` 1570 // The java package for the APK to be installed. 1571 // Value is determined by examining the application's manifest. 1572 PackageName string `protobuf:"bytes,2,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` 1573} 1574 1575func (x *Apk) Reset() { 1576 *x = Apk{} 1577 if protoimpl.UnsafeEnabled { 1578 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[9] 1579 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1580 ms.StoreMessageInfo(mi) 1581 } 1582} 1583 1584func (x *Apk) String() string { 1585 return protoimpl.X.MessageStringOf(x) 1586} 1587 1588func (*Apk) ProtoMessage() {} 1589 1590func (x *Apk) ProtoReflect() protoreflect.Message { 1591 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[9] 1592 if protoimpl.UnsafeEnabled && x != nil { 1593 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1594 if ms.LoadMessageInfo() == nil { 1595 ms.StoreMessageInfo(mi) 1596 } 1597 return ms 1598 } 1599 return mi.MessageOf(x) 1600} 1601 1602// Deprecated: Use Apk.ProtoReflect.Descriptor instead. 1603func (*Apk) Descriptor() ([]byte, []int) { 1604 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{9} 1605} 1606 1607func (x *Apk) GetLocation() *FileReference { 1608 if x != nil { 1609 return x.Location 1610 } 1611 return nil 1612} 1613 1614func (x *Apk) GetPackageName() string { 1615 if x != nil { 1616 return x.PackageName 1617 } 1618 return "" 1619} 1620 1621// An Android App Bundle file format, containing a BundleConfig.pb file, 1622// a base module directory, zero or more dynamic feature module directories. 1623// <p>See https://developer.android.com/guide/app-bundle/build for guidance on 1624// building App Bundles. 1625type AppBundle struct { 1626 state protoimpl.MessageState 1627 sizeCache protoimpl.SizeCache 1628 unknownFields protoimpl.UnknownFields 1629 1630 // Required. Bundle location information. 1631 // 1632 // Types that are assignable to Bundle: 1633 // *AppBundle_BundleLocation 1634 Bundle isAppBundle_Bundle `protobuf_oneof:"bundle"` 1635} 1636 1637func (x *AppBundle) Reset() { 1638 *x = AppBundle{} 1639 if protoimpl.UnsafeEnabled { 1640 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[10] 1641 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1642 ms.StoreMessageInfo(mi) 1643 } 1644} 1645 1646func (x *AppBundle) String() string { 1647 return protoimpl.X.MessageStringOf(x) 1648} 1649 1650func (*AppBundle) ProtoMessage() {} 1651 1652func (x *AppBundle) ProtoReflect() protoreflect.Message { 1653 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[10] 1654 if protoimpl.UnsafeEnabled && x != nil { 1655 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1656 if ms.LoadMessageInfo() == nil { 1657 ms.StoreMessageInfo(mi) 1658 } 1659 return ms 1660 } 1661 return mi.MessageOf(x) 1662} 1663 1664// Deprecated: Use AppBundle.ProtoReflect.Descriptor instead. 1665func (*AppBundle) Descriptor() ([]byte, []int) { 1666 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{10} 1667} 1668 1669func (m *AppBundle) GetBundle() isAppBundle_Bundle { 1670 if m != nil { 1671 return m.Bundle 1672 } 1673 return nil 1674} 1675 1676func (x *AppBundle) GetBundleLocation() *FileReference { 1677 if x, ok := x.GetBundle().(*AppBundle_BundleLocation); ok { 1678 return x.BundleLocation 1679 } 1680 return nil 1681} 1682 1683type isAppBundle_Bundle interface { 1684 isAppBundle_Bundle() 1685} 1686 1687type AppBundle_BundleLocation struct { 1688 // .aab file representing the app bundle under test. 1689 BundleLocation *FileReference `protobuf:"bytes,1,opt,name=bundle_location,json=bundleLocation,proto3,oneof"` 1690} 1691 1692func (*AppBundle_BundleLocation) isAppBundle_Bundle() {} 1693 1694// A single device file description. 1695type DeviceFile struct { 1696 state protoimpl.MessageState 1697 sizeCache protoimpl.SizeCache 1698 unknownFields protoimpl.UnknownFields 1699 1700 // Required. 1701 // 1702 // Types that are assignable to DeviceFile: 1703 // *DeviceFile_ObbFile 1704 // *DeviceFile_RegularFile 1705 DeviceFile isDeviceFile_DeviceFile `protobuf_oneof:"device_file"` 1706} 1707 1708func (x *DeviceFile) Reset() { 1709 *x = DeviceFile{} 1710 if protoimpl.UnsafeEnabled { 1711 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[11] 1712 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1713 ms.StoreMessageInfo(mi) 1714 } 1715} 1716 1717func (x *DeviceFile) String() string { 1718 return protoimpl.X.MessageStringOf(x) 1719} 1720 1721func (*DeviceFile) ProtoMessage() {} 1722 1723func (x *DeviceFile) ProtoReflect() protoreflect.Message { 1724 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[11] 1725 if protoimpl.UnsafeEnabled && x != nil { 1726 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1727 if ms.LoadMessageInfo() == nil { 1728 ms.StoreMessageInfo(mi) 1729 } 1730 return ms 1731 } 1732 return mi.MessageOf(x) 1733} 1734 1735// Deprecated: Use DeviceFile.ProtoReflect.Descriptor instead. 1736func (*DeviceFile) Descriptor() ([]byte, []int) { 1737 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{11} 1738} 1739 1740func (m *DeviceFile) GetDeviceFile() isDeviceFile_DeviceFile { 1741 if m != nil { 1742 return m.DeviceFile 1743 } 1744 return nil 1745} 1746 1747func (x *DeviceFile) GetObbFile() *ObbFile { 1748 if x, ok := x.GetDeviceFile().(*DeviceFile_ObbFile); ok { 1749 return x.ObbFile 1750 } 1751 return nil 1752} 1753 1754func (x *DeviceFile) GetRegularFile() *RegularFile { 1755 if x, ok := x.GetDeviceFile().(*DeviceFile_RegularFile); ok { 1756 return x.RegularFile 1757 } 1758 return nil 1759} 1760 1761type isDeviceFile_DeviceFile interface { 1762 isDeviceFile_DeviceFile() 1763} 1764 1765type DeviceFile_ObbFile struct { 1766 // A reference to an opaque binary blob file. 1767 ObbFile *ObbFile `protobuf:"bytes,1,opt,name=obb_file,json=obbFile,proto3,oneof"` 1768} 1769 1770type DeviceFile_RegularFile struct { 1771 // A reference to a regular file. 1772 RegularFile *RegularFile `protobuf:"bytes,2,opt,name=regular_file,json=regularFile,proto3,oneof"` 1773} 1774 1775func (*DeviceFile_ObbFile) isDeviceFile_DeviceFile() {} 1776 1777func (*DeviceFile_RegularFile) isDeviceFile_DeviceFile() {} 1778 1779// An opaque binary blob file to install on the device before the test starts. 1780type ObbFile struct { 1781 state protoimpl.MessageState 1782 sizeCache protoimpl.SizeCache 1783 unknownFields protoimpl.UnknownFields 1784 1785 // Required. OBB file name which must conform to the format as specified by 1786 // Android 1787 // e.g. [main|patch].0300110.com.example.android.obb 1788 // which will be installed into 1789 // \<shared-storage\>/Android/obb/\<package-name\>/ 1790 // on the device. 1791 ObbFileName string `protobuf:"bytes,1,opt,name=obb_file_name,json=obbFileName,proto3" json:"obb_file_name,omitempty"` 1792 // Required. Opaque Binary Blob (OBB) file(s) to install on the device. 1793 Obb *FileReference `protobuf:"bytes,2,opt,name=obb,proto3" json:"obb,omitempty"` 1794} 1795 1796func (x *ObbFile) Reset() { 1797 *x = ObbFile{} 1798 if protoimpl.UnsafeEnabled { 1799 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[12] 1800 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1801 ms.StoreMessageInfo(mi) 1802 } 1803} 1804 1805func (x *ObbFile) String() string { 1806 return protoimpl.X.MessageStringOf(x) 1807} 1808 1809func (*ObbFile) ProtoMessage() {} 1810 1811func (x *ObbFile) ProtoReflect() protoreflect.Message { 1812 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[12] 1813 if protoimpl.UnsafeEnabled && x != nil { 1814 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1815 if ms.LoadMessageInfo() == nil { 1816 ms.StoreMessageInfo(mi) 1817 } 1818 return ms 1819 } 1820 return mi.MessageOf(x) 1821} 1822 1823// Deprecated: Use ObbFile.ProtoReflect.Descriptor instead. 1824func (*ObbFile) Descriptor() ([]byte, []int) { 1825 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{12} 1826} 1827 1828func (x *ObbFile) GetObbFileName() string { 1829 if x != nil { 1830 return x.ObbFileName 1831 } 1832 return "" 1833} 1834 1835func (x *ObbFile) GetObb() *FileReference { 1836 if x != nil { 1837 return x.Obb 1838 } 1839 return nil 1840} 1841 1842// A file or directory to install on the device before the test starts. 1843type RegularFile struct { 1844 state protoimpl.MessageState 1845 sizeCache protoimpl.SizeCache 1846 unknownFields protoimpl.UnknownFields 1847 1848 // Required. The source file. 1849 Content *FileReference `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` 1850 // Required. Where to put the content on the device. Must be an absolute, 1851 // allowlisted path. If the file exists, it will be replaced. 1852 // The following device-side directories and any of their subdirectories are 1853 // allowlisted: 1854 // <p>${EXTERNAL_STORAGE}, /sdcard, or /storage</p> 1855 // <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p> 1856 // <p>Specifying a path outside of these directory trees is invalid. 1857 // 1858 // <p> The paths /sdcard and /data will be made available and treated as 1859 // implicit path substitutions. E.g. if /sdcard on a particular device does 1860 // not map to external storage, the system will replace it with the external 1861 // storage path prefix for that device and copy the file there. 1862 // 1863 // <p> It is strongly advised to use the <a href= 1864 // "http://developer.android.com/reference/android/os/Environment.html"> 1865 // Environment API</a> in app and test code to access files on the device in a 1866 // portable way. 1867 DevicePath string `protobuf:"bytes,2,opt,name=device_path,json=devicePath,proto3" json:"device_path,omitempty"` 1868} 1869 1870func (x *RegularFile) Reset() { 1871 *x = RegularFile{} 1872 if protoimpl.UnsafeEnabled { 1873 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[13] 1874 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1875 ms.StoreMessageInfo(mi) 1876 } 1877} 1878 1879func (x *RegularFile) String() string { 1880 return protoimpl.X.MessageStringOf(x) 1881} 1882 1883func (*RegularFile) ProtoMessage() {} 1884 1885func (x *RegularFile) ProtoReflect() protoreflect.Message { 1886 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[13] 1887 if protoimpl.UnsafeEnabled && x != nil { 1888 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1889 if ms.LoadMessageInfo() == nil { 1890 ms.StoreMessageInfo(mi) 1891 } 1892 return ms 1893 } 1894 return mi.MessageOf(x) 1895} 1896 1897// Deprecated: Use RegularFile.ProtoReflect.Descriptor instead. 1898func (*RegularFile) Descriptor() ([]byte, []int) { 1899 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{13} 1900} 1901 1902func (x *RegularFile) GetContent() *FileReference { 1903 if x != nil { 1904 return x.Content 1905 } 1906 return nil 1907} 1908 1909func (x *RegularFile) GetDevicePath() string { 1910 if x != nil { 1911 return x.DevicePath 1912 } 1913 return "" 1914} 1915 1916// A file or directory to install on the device before the test starts. 1917type IosDeviceFile struct { 1918 state protoimpl.MessageState 1919 sizeCache protoimpl.SizeCache 1920 unknownFields protoimpl.UnknownFields 1921 1922 // The source file 1923 Content *FileReference `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` 1924 // The bundle id of the app where this file lives. 1925 // 1926 // iOS apps sandbox their own filesystem, so app files must specify which app 1927 // installed on the device. 1928 BundleId string `protobuf:"bytes,2,opt,name=bundle_id,json=bundleId,proto3" json:"bundle_id,omitempty"` 1929 // Location of the file on the device, inside the app's sandboxed filesystem 1930 DevicePath string `protobuf:"bytes,3,opt,name=device_path,json=devicePath,proto3" json:"device_path,omitempty"` 1931} 1932 1933func (x *IosDeviceFile) Reset() { 1934 *x = IosDeviceFile{} 1935 if protoimpl.UnsafeEnabled { 1936 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[14] 1937 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1938 ms.StoreMessageInfo(mi) 1939 } 1940} 1941 1942func (x *IosDeviceFile) String() string { 1943 return protoimpl.X.MessageStringOf(x) 1944} 1945 1946func (*IosDeviceFile) ProtoMessage() {} 1947 1948func (x *IosDeviceFile) ProtoReflect() protoreflect.Message { 1949 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[14] 1950 if protoimpl.UnsafeEnabled && x != nil { 1951 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1952 if ms.LoadMessageInfo() == nil { 1953 ms.StoreMessageInfo(mi) 1954 } 1955 return ms 1956 } 1957 return mi.MessageOf(x) 1958} 1959 1960// Deprecated: Use IosDeviceFile.ProtoReflect.Descriptor instead. 1961func (*IosDeviceFile) Descriptor() ([]byte, []int) { 1962 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{14} 1963} 1964 1965func (x *IosDeviceFile) GetContent() *FileReference { 1966 if x != nil { 1967 return x.Content 1968 } 1969 return nil 1970} 1971 1972func (x *IosDeviceFile) GetBundleId() string { 1973 if x != nil { 1974 return x.BundleId 1975 } 1976 return "" 1977} 1978 1979func (x *IosDeviceFile) GetDevicePath() string { 1980 if x != nil { 1981 return x.DevicePath 1982 } 1983 return "" 1984} 1985 1986// A test of an Android Application with a Test Loop. 1987// The intent \<intent-name\> will be implicitly added, since Games is the only 1988// user of this api, for the time being. 1989type AndroidTestLoop struct { 1990 state protoimpl.MessageState 1991 sizeCache protoimpl.SizeCache 1992 unknownFields protoimpl.UnknownFields 1993 1994 // Required. The Android package to test. 1995 // 1996 // Types that are assignable to AppUnderTest: 1997 // *AndroidTestLoop_AppApk 1998 // *AndroidTestLoop_AppBundle 1999 AppUnderTest isAndroidTestLoop_AppUnderTest `protobuf_oneof:"app_under_test"` 2000 // The java package for the application under test. 2001 // The default is determined by examining the application's manifest. 2002 AppPackageId string `protobuf:"bytes,2,opt,name=app_package_id,json=appPackageId,proto3" json:"app_package_id,omitempty"` 2003 // The list of scenarios that should be run during the test. 2004 // The default is all test loops, derived from the application's 2005 // manifest. 2006 Scenarios []int32 `protobuf:"varint,3,rep,packed,name=scenarios,proto3" json:"scenarios,omitempty"` 2007 // The list of scenario labels that should be run during the test. 2008 // The scenario labels should map to labels defined in the application's 2009 // manifest. For example, player_experience and 2010 // com.google.test.loops.player_experience add all of the loops labeled in the 2011 // manifest with the com.google.test.loops.player_experience name to the 2012 // execution. 2013 // Scenarios can also be specified in the scenarios field. 2014 ScenarioLabels []string `protobuf:"bytes,4,rep,name=scenario_labels,json=scenarioLabels,proto3" json:"scenario_labels,omitempty"` 2015} 2016 2017func (x *AndroidTestLoop) Reset() { 2018 *x = AndroidTestLoop{} 2019 if protoimpl.UnsafeEnabled { 2020 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[15] 2021 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2022 ms.StoreMessageInfo(mi) 2023 } 2024} 2025 2026func (x *AndroidTestLoop) String() string { 2027 return protoimpl.X.MessageStringOf(x) 2028} 2029 2030func (*AndroidTestLoop) ProtoMessage() {} 2031 2032func (x *AndroidTestLoop) ProtoReflect() protoreflect.Message { 2033 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[15] 2034 if protoimpl.UnsafeEnabled && x != nil { 2035 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2036 if ms.LoadMessageInfo() == nil { 2037 ms.StoreMessageInfo(mi) 2038 } 2039 return ms 2040 } 2041 return mi.MessageOf(x) 2042} 2043 2044// Deprecated: Use AndroidTestLoop.ProtoReflect.Descriptor instead. 2045func (*AndroidTestLoop) Descriptor() ([]byte, []int) { 2046 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{15} 2047} 2048 2049func (m *AndroidTestLoop) GetAppUnderTest() isAndroidTestLoop_AppUnderTest { 2050 if m != nil { 2051 return m.AppUnderTest 2052 } 2053 return nil 2054} 2055 2056func (x *AndroidTestLoop) GetAppApk() *FileReference { 2057 if x, ok := x.GetAppUnderTest().(*AndroidTestLoop_AppApk); ok { 2058 return x.AppApk 2059 } 2060 return nil 2061} 2062 2063func (x *AndroidTestLoop) GetAppBundle() *AppBundle { 2064 if x, ok := x.GetAppUnderTest().(*AndroidTestLoop_AppBundle); ok { 2065 return x.AppBundle 2066 } 2067 return nil 2068} 2069 2070func (x *AndroidTestLoop) GetAppPackageId() string { 2071 if x != nil { 2072 return x.AppPackageId 2073 } 2074 return "" 2075} 2076 2077func (x *AndroidTestLoop) GetScenarios() []int32 { 2078 if x != nil { 2079 return x.Scenarios 2080 } 2081 return nil 2082} 2083 2084func (x *AndroidTestLoop) GetScenarioLabels() []string { 2085 if x != nil { 2086 return x.ScenarioLabels 2087 } 2088 return nil 2089} 2090 2091type isAndroidTestLoop_AppUnderTest interface { 2092 isAndroidTestLoop_AppUnderTest() 2093} 2094 2095type AndroidTestLoop_AppApk struct { 2096 // The APK for the application under test. 2097 AppApk *FileReference `protobuf:"bytes,1,opt,name=app_apk,json=appApk,proto3,oneof"` 2098} 2099 2100type AndroidTestLoop_AppBundle struct { 2101 // A multi-apk app bundle for the application under test. 2102 AppBundle *AppBundle `protobuf:"bytes,5,opt,name=app_bundle,json=appBundle,proto3,oneof"` 2103} 2104 2105func (*AndroidTestLoop_AppApk) isAndroidTestLoop_AppUnderTest() {} 2106 2107func (*AndroidTestLoop_AppBundle) isAndroidTestLoop_AppUnderTest() {} 2108 2109// A test of an iOS application that uses the XCTest framework. 2110// Xcode supports the option to "build for testing", which generates an 2111// .xctestrun file that contains a test specification (arguments, test methods, 2112// etc). This test type accepts a zip file containing the .xctestrun file and 2113// the corresponding contents of the Build/Products directory that contains all 2114// the binaries needed to run the tests. 2115type IosXcTest struct { 2116 state protoimpl.MessageState 2117 sizeCache protoimpl.SizeCache 2118 unknownFields protoimpl.UnknownFields 2119 2120 // Required. The .zip containing the .xctestrun file and the contents of the 2121 // DerivedData/Build/Products directory. 2122 // The .xctestrun file in this zip is ignored if the xctestrun field is 2123 // specified. 2124 TestsZip *FileReference `protobuf:"bytes,1,opt,name=tests_zip,json=testsZip,proto3" json:"tests_zip,omitempty"` 2125 // An .xctestrun file that will override the .xctestrun file in the 2126 // tests zip. Because the .xctestrun file contains environment variables along 2127 // with test methods to run and/or ignore, this can be useful for sharding 2128 // tests. Default is taken from the tests zip. 2129 Xctestrun *FileReference `protobuf:"bytes,2,opt,name=xctestrun,proto3" json:"xctestrun,omitempty"` 2130 // The Xcode version that should be used for the test. 2131 // Use the TestEnvironmentDiscoveryService to get supported options. 2132 // Defaults to the latest Xcode version Firebase Test Lab supports. 2133 XcodeVersion string `protobuf:"bytes,3,opt,name=xcode_version,json=xcodeVersion,proto3" json:"xcode_version,omitempty"` 2134 // Output only. The bundle id for the application under test. 2135 AppBundleId string `protobuf:"bytes,4,opt,name=app_bundle_id,json=appBundleId,proto3" json:"app_bundle_id,omitempty"` 2136 // The option to test special app entitlements. Setting this would re-sign the 2137 // app having special entitlements with an explicit application-identifier. 2138 // Currently supports testing aps-environment entitlement. 2139 TestSpecialEntitlements bool `protobuf:"varint,6,opt,name=test_special_entitlements,json=testSpecialEntitlements,proto3" json:"test_special_entitlements,omitempty"` 2140} 2141 2142func (x *IosXcTest) Reset() { 2143 *x = IosXcTest{} 2144 if protoimpl.UnsafeEnabled { 2145 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[16] 2146 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2147 ms.StoreMessageInfo(mi) 2148 } 2149} 2150 2151func (x *IosXcTest) String() string { 2152 return protoimpl.X.MessageStringOf(x) 2153} 2154 2155func (*IosXcTest) ProtoMessage() {} 2156 2157func (x *IosXcTest) ProtoReflect() protoreflect.Message { 2158 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[16] 2159 if protoimpl.UnsafeEnabled && x != nil { 2160 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2161 if ms.LoadMessageInfo() == nil { 2162 ms.StoreMessageInfo(mi) 2163 } 2164 return ms 2165 } 2166 return mi.MessageOf(x) 2167} 2168 2169// Deprecated: Use IosXcTest.ProtoReflect.Descriptor instead. 2170func (*IosXcTest) Descriptor() ([]byte, []int) { 2171 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{16} 2172} 2173 2174func (x *IosXcTest) GetTestsZip() *FileReference { 2175 if x != nil { 2176 return x.TestsZip 2177 } 2178 return nil 2179} 2180 2181func (x *IosXcTest) GetXctestrun() *FileReference { 2182 if x != nil { 2183 return x.Xctestrun 2184 } 2185 return nil 2186} 2187 2188func (x *IosXcTest) GetXcodeVersion() string { 2189 if x != nil { 2190 return x.XcodeVersion 2191 } 2192 return "" 2193} 2194 2195func (x *IosXcTest) GetAppBundleId() string { 2196 if x != nil { 2197 return x.AppBundleId 2198 } 2199 return "" 2200} 2201 2202func (x *IosXcTest) GetTestSpecialEntitlements() bool { 2203 if x != nil { 2204 return x.TestSpecialEntitlements 2205 } 2206 return false 2207} 2208 2209// A test of an iOS application that implements one or more game loop scenarios. 2210// This test type accepts an archived application (.ipa file) and a list of 2211// integer scenarios that will be executed on the app sequentially. 2212type IosTestLoop struct { 2213 state protoimpl.MessageState 2214 sizeCache protoimpl.SizeCache 2215 unknownFields protoimpl.UnknownFields 2216 2217 // Required. The .ipa of the application to test. 2218 AppIpa *FileReference `protobuf:"bytes,1,opt,name=app_ipa,json=appIpa,proto3" json:"app_ipa,omitempty"` 2219 // The list of scenarios that should be run during the test. Defaults to the 2220 // single scenario 0 if unspecified. 2221 Scenarios []int32 `protobuf:"varint,2,rep,packed,name=scenarios,proto3" json:"scenarios,omitempty"` 2222 // Output only. The bundle id for the application under test. 2223 AppBundleId string `protobuf:"bytes,3,opt,name=app_bundle_id,json=appBundleId,proto3" json:"app_bundle_id,omitempty"` 2224} 2225 2226func (x *IosTestLoop) Reset() { 2227 *x = IosTestLoop{} 2228 if protoimpl.UnsafeEnabled { 2229 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[17] 2230 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2231 ms.StoreMessageInfo(mi) 2232 } 2233} 2234 2235func (x *IosTestLoop) String() string { 2236 return protoimpl.X.MessageStringOf(x) 2237} 2238 2239func (*IosTestLoop) ProtoMessage() {} 2240 2241func (x *IosTestLoop) ProtoReflect() protoreflect.Message { 2242 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[17] 2243 if protoimpl.UnsafeEnabled && x != nil { 2244 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2245 if ms.LoadMessageInfo() == nil { 2246 ms.StoreMessageInfo(mi) 2247 } 2248 return ms 2249 } 2250 return mi.MessageOf(x) 2251} 2252 2253// Deprecated: Use IosTestLoop.ProtoReflect.Descriptor instead. 2254func (*IosTestLoop) Descriptor() ([]byte, []int) { 2255 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{17} 2256} 2257 2258func (x *IosTestLoop) GetAppIpa() *FileReference { 2259 if x != nil { 2260 return x.AppIpa 2261 } 2262 return nil 2263} 2264 2265func (x *IosTestLoop) GetScenarios() []int32 { 2266 if x != nil { 2267 return x.Scenarios 2268 } 2269 return nil 2270} 2271 2272func (x *IosTestLoop) GetAppBundleId() string { 2273 if x != nil { 2274 return x.AppBundleId 2275 } 2276 return "" 2277} 2278 2279// A test of an Android application that can control an Android component 2280// independently of its normal lifecycle. 2281// Android instrumentation tests run an application APK and test APK inside the 2282// same process on a virtual or physical AndroidDevice. They also specify 2283// a test runner class, such as com.google.GoogleTestRunner, which can vary 2284// on the specific instrumentation framework chosen. 2285// 2286// See <http://developer.android.com/tools/testing/testing_android.html> for 2287// more information on types of Android tests. 2288type AndroidInstrumentationTest struct { 2289 state protoimpl.MessageState 2290 sizeCache protoimpl.SizeCache 2291 unknownFields protoimpl.UnknownFields 2292 2293 // Required. 2294 // 2295 // Types that are assignable to AppUnderTest: 2296 // *AndroidInstrumentationTest_AppApk 2297 // *AndroidInstrumentationTest_AppBundle 2298 AppUnderTest isAndroidInstrumentationTest_AppUnderTest `protobuf_oneof:"app_under_test"` 2299 // Required. The APK containing the test code to be executed. 2300 TestApk *FileReference `protobuf:"bytes,2,opt,name=test_apk,json=testApk,proto3" json:"test_apk,omitempty"` 2301 // The java package for the application under test. 2302 // The default value is determined by examining the application's manifest. 2303 AppPackageId string `protobuf:"bytes,3,opt,name=app_package_id,json=appPackageId,proto3" json:"app_package_id,omitempty"` 2304 // The java package for the test to be executed. 2305 // The default value is determined by examining the application's manifest. 2306 TestPackageId string `protobuf:"bytes,4,opt,name=test_package_id,json=testPackageId,proto3" json:"test_package_id,omitempty"` 2307 // The InstrumentationTestRunner class. 2308 // The default value is determined by examining the application's manifest. 2309 TestRunnerClass string `protobuf:"bytes,5,opt,name=test_runner_class,json=testRunnerClass,proto3" json:"test_runner_class,omitempty"` 2310 // Each target must be fully qualified with the package name or class name, 2311 // in one of these formats: 2312 // - "package package_name" 2313 // - "class package_name.class_name" 2314 // - "class package_name.class_name#method_name" 2315 // 2316 // If empty, all targets in the module will be run. 2317 TestTargets []string `protobuf:"bytes,6,rep,name=test_targets,json=testTargets,proto3" json:"test_targets,omitempty"` 2318 // The option of whether running each test within its own invocation of 2319 // instrumentation with Android Test Orchestrator or not. 2320 // ** Orchestrator is only compatible with AndroidJUnitRunner version 1.0 or 2321 // higher! ** 2322 // Orchestrator offers the following benefits: 2323 // - No shared state 2324 // - Crashes are isolated 2325 // - Logs are scoped per test 2326 // 2327 // See 2328 // <https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator> 2329 // for more information about Android Test Orchestrator. 2330 // 2331 // If not set, the test will be run without the orchestrator. 2332 OrchestratorOption OrchestratorOption `protobuf:"varint,7,opt,name=orchestrator_option,json=orchestratorOption,proto3,enum=google.devtools.testing.v1.OrchestratorOption" json:"orchestrator_option,omitempty"` 2333 // The option to run tests in multiple shards in parallel. 2334 ShardingOption *ShardingOption `protobuf:"bytes,9,opt,name=sharding_option,json=shardingOption,proto3" json:"sharding_option,omitempty"` 2335} 2336 2337func (x *AndroidInstrumentationTest) Reset() { 2338 *x = AndroidInstrumentationTest{} 2339 if protoimpl.UnsafeEnabled { 2340 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[18] 2341 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2342 ms.StoreMessageInfo(mi) 2343 } 2344} 2345 2346func (x *AndroidInstrumentationTest) String() string { 2347 return protoimpl.X.MessageStringOf(x) 2348} 2349 2350func (*AndroidInstrumentationTest) ProtoMessage() {} 2351 2352func (x *AndroidInstrumentationTest) ProtoReflect() protoreflect.Message { 2353 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[18] 2354 if protoimpl.UnsafeEnabled && x != nil { 2355 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2356 if ms.LoadMessageInfo() == nil { 2357 ms.StoreMessageInfo(mi) 2358 } 2359 return ms 2360 } 2361 return mi.MessageOf(x) 2362} 2363 2364// Deprecated: Use AndroidInstrumentationTest.ProtoReflect.Descriptor instead. 2365func (*AndroidInstrumentationTest) Descriptor() ([]byte, []int) { 2366 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{18} 2367} 2368 2369func (m *AndroidInstrumentationTest) GetAppUnderTest() isAndroidInstrumentationTest_AppUnderTest { 2370 if m != nil { 2371 return m.AppUnderTest 2372 } 2373 return nil 2374} 2375 2376func (x *AndroidInstrumentationTest) GetAppApk() *FileReference { 2377 if x, ok := x.GetAppUnderTest().(*AndroidInstrumentationTest_AppApk); ok { 2378 return x.AppApk 2379 } 2380 return nil 2381} 2382 2383func (x *AndroidInstrumentationTest) GetAppBundle() *AppBundle { 2384 if x, ok := x.GetAppUnderTest().(*AndroidInstrumentationTest_AppBundle); ok { 2385 return x.AppBundle 2386 } 2387 return nil 2388} 2389 2390func (x *AndroidInstrumentationTest) GetTestApk() *FileReference { 2391 if x != nil { 2392 return x.TestApk 2393 } 2394 return nil 2395} 2396 2397func (x *AndroidInstrumentationTest) GetAppPackageId() string { 2398 if x != nil { 2399 return x.AppPackageId 2400 } 2401 return "" 2402} 2403 2404func (x *AndroidInstrumentationTest) GetTestPackageId() string { 2405 if x != nil { 2406 return x.TestPackageId 2407 } 2408 return "" 2409} 2410 2411func (x *AndroidInstrumentationTest) GetTestRunnerClass() string { 2412 if x != nil { 2413 return x.TestRunnerClass 2414 } 2415 return "" 2416} 2417 2418func (x *AndroidInstrumentationTest) GetTestTargets() []string { 2419 if x != nil { 2420 return x.TestTargets 2421 } 2422 return nil 2423} 2424 2425func (x *AndroidInstrumentationTest) GetOrchestratorOption() OrchestratorOption { 2426 if x != nil { 2427 return x.OrchestratorOption 2428 } 2429 return OrchestratorOption_ORCHESTRATOR_OPTION_UNSPECIFIED 2430} 2431 2432func (x *AndroidInstrumentationTest) GetShardingOption() *ShardingOption { 2433 if x != nil { 2434 return x.ShardingOption 2435 } 2436 return nil 2437} 2438 2439type isAndroidInstrumentationTest_AppUnderTest interface { 2440 isAndroidInstrumentationTest_AppUnderTest() 2441} 2442 2443type AndroidInstrumentationTest_AppApk struct { 2444 // The APK for the application under test. 2445 AppApk *FileReference `protobuf:"bytes,1,opt,name=app_apk,json=appApk,proto3,oneof"` 2446} 2447 2448type AndroidInstrumentationTest_AppBundle struct { 2449 // A multi-apk app bundle for the application under test. 2450 AppBundle *AppBundle `protobuf:"bytes,8,opt,name=app_bundle,json=appBundle,proto3,oneof"` 2451} 2452 2453func (*AndroidInstrumentationTest_AppApk) isAndroidInstrumentationTest_AppUnderTest() {} 2454 2455func (*AndroidInstrumentationTest_AppBundle) isAndroidInstrumentationTest_AppUnderTest() {} 2456 2457// A test of an android application that explores the application on a virtual 2458// or physical Android Device, finding culprits and crashes as it goes. 2459// Next tag: 30 2460type AndroidRoboTest struct { 2461 state protoimpl.MessageState 2462 sizeCache protoimpl.SizeCache 2463 unknownFields protoimpl.UnknownFields 2464 2465 // Required. 2466 // 2467 // Types that are assignable to AppUnderTest: 2468 // *AndroidRoboTest_AppApk 2469 // *AndroidRoboTest_AppBundle 2470 AppUnderTest isAndroidRoboTest_AppUnderTest `protobuf_oneof:"app_under_test"` 2471 // The java package for the application under test. 2472 // The default value is determined by examining the application's manifest. 2473 AppPackageId string `protobuf:"bytes,2,opt,name=app_package_id,json=appPackageId,proto3" json:"app_package_id,omitempty"` 2474 // The initial activity that should be used to start the app. 2475 AppInitialActivity string `protobuf:"bytes,3,opt,name=app_initial_activity,json=appInitialActivity,proto3" json:"app_initial_activity,omitempty"` 2476 // The max depth of the traversal stack Robo can explore. Needs to be at least 2477 // 2 to make Robo explore the app beyond the first activity. 2478 // Default is 50. 2479 // 2480 // Deprecated: Do not use. 2481 MaxDepth int32 `protobuf:"varint,7,opt,name=max_depth,json=maxDepth,proto3" json:"max_depth,omitempty"` 2482 // The max number of steps Robo can execute. 2483 // Default is no limit. 2484 // 2485 // Deprecated: Do not use. 2486 MaxSteps int32 `protobuf:"varint,8,opt,name=max_steps,json=maxSteps,proto3" json:"max_steps,omitempty"` 2487 // A set of directives Robo should apply during the crawl. 2488 // This allows users to customize the crawl. For example, the username and 2489 // password for a test account can be provided. 2490 RoboDirectives []*RoboDirective `protobuf:"bytes,11,rep,name=robo_directives,json=roboDirectives,proto3" json:"robo_directives,omitempty"` 2491 // A JSON file with a sequence of actions Robo should perform as a prologue 2492 // for the crawl. 2493 RoboScript *FileReference `protobuf:"bytes,13,opt,name=robo_script,json=roboScript,proto3" json:"robo_script,omitempty"` 2494 // The intents used to launch the app for the crawl. 2495 // If none are provided, then the main launcher activity is launched. 2496 // If some are provided, then only those provided are launched (the main 2497 // launcher activity must be provided explicitly). 2498 StartingIntents []*RoboStartingIntent `protobuf:"bytes,15,rep,name=starting_intents,json=startingIntents,proto3" json:"starting_intents,omitempty"` 2499} 2500 2501func (x *AndroidRoboTest) Reset() { 2502 *x = AndroidRoboTest{} 2503 if protoimpl.UnsafeEnabled { 2504 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[19] 2505 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2506 ms.StoreMessageInfo(mi) 2507 } 2508} 2509 2510func (x *AndroidRoboTest) String() string { 2511 return protoimpl.X.MessageStringOf(x) 2512} 2513 2514func (*AndroidRoboTest) ProtoMessage() {} 2515 2516func (x *AndroidRoboTest) ProtoReflect() protoreflect.Message { 2517 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[19] 2518 if protoimpl.UnsafeEnabled && x != nil { 2519 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2520 if ms.LoadMessageInfo() == nil { 2521 ms.StoreMessageInfo(mi) 2522 } 2523 return ms 2524 } 2525 return mi.MessageOf(x) 2526} 2527 2528// Deprecated: Use AndroidRoboTest.ProtoReflect.Descriptor instead. 2529func (*AndroidRoboTest) Descriptor() ([]byte, []int) { 2530 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{19} 2531} 2532 2533func (m *AndroidRoboTest) GetAppUnderTest() isAndroidRoboTest_AppUnderTest { 2534 if m != nil { 2535 return m.AppUnderTest 2536 } 2537 return nil 2538} 2539 2540func (x *AndroidRoboTest) GetAppApk() *FileReference { 2541 if x, ok := x.GetAppUnderTest().(*AndroidRoboTest_AppApk); ok { 2542 return x.AppApk 2543 } 2544 return nil 2545} 2546 2547func (x *AndroidRoboTest) GetAppBundle() *AppBundle { 2548 if x, ok := x.GetAppUnderTest().(*AndroidRoboTest_AppBundle); ok { 2549 return x.AppBundle 2550 } 2551 return nil 2552} 2553 2554func (x *AndroidRoboTest) GetAppPackageId() string { 2555 if x != nil { 2556 return x.AppPackageId 2557 } 2558 return "" 2559} 2560 2561func (x *AndroidRoboTest) GetAppInitialActivity() string { 2562 if x != nil { 2563 return x.AppInitialActivity 2564 } 2565 return "" 2566} 2567 2568// Deprecated: Do not use. 2569func (x *AndroidRoboTest) GetMaxDepth() int32 { 2570 if x != nil { 2571 return x.MaxDepth 2572 } 2573 return 0 2574} 2575 2576// Deprecated: Do not use. 2577func (x *AndroidRoboTest) GetMaxSteps() int32 { 2578 if x != nil { 2579 return x.MaxSteps 2580 } 2581 return 0 2582} 2583 2584func (x *AndroidRoboTest) GetRoboDirectives() []*RoboDirective { 2585 if x != nil { 2586 return x.RoboDirectives 2587 } 2588 return nil 2589} 2590 2591func (x *AndroidRoboTest) GetRoboScript() *FileReference { 2592 if x != nil { 2593 return x.RoboScript 2594 } 2595 return nil 2596} 2597 2598func (x *AndroidRoboTest) GetStartingIntents() []*RoboStartingIntent { 2599 if x != nil { 2600 return x.StartingIntents 2601 } 2602 return nil 2603} 2604 2605type isAndroidRoboTest_AppUnderTest interface { 2606 isAndroidRoboTest_AppUnderTest() 2607} 2608 2609type AndroidRoboTest_AppApk struct { 2610 // The APK for the application under test. 2611 AppApk *FileReference `protobuf:"bytes,1,opt,name=app_apk,json=appApk,proto3,oneof"` 2612} 2613 2614type AndroidRoboTest_AppBundle struct { 2615 // A multi-apk app bundle for the application under test. 2616 AppBundle *AppBundle `protobuf:"bytes,16,opt,name=app_bundle,json=appBundle,proto3,oneof"` 2617} 2618 2619func (*AndroidRoboTest_AppApk) isAndroidRoboTest_AppUnderTest() {} 2620 2621func (*AndroidRoboTest_AppBundle) isAndroidRoboTest_AppUnderTest() {} 2622 2623// Directs Robo to interact with a specific UI element if it is encountered 2624// during the crawl. Currently, Robo can perform text entry or element click. 2625type RoboDirective struct { 2626 state protoimpl.MessageState 2627 sizeCache protoimpl.SizeCache 2628 unknownFields protoimpl.UnknownFields 2629 2630 // Required. The android resource name of the target UI element. 2631 // For example, 2632 // in Java: R.string.foo 2633 // in xml: @string/foo 2634 // Only the "foo" part is needed. 2635 // Reference doc: 2636 // https://developer.android.com/guide/topics/resources/accessing-resources.html 2637 ResourceName string `protobuf:"bytes,1,opt,name=resource_name,json=resourceName,proto3" json:"resource_name,omitempty"` 2638 // The text that Robo is directed to set. If left empty, the directive will be 2639 // treated as a CLICK on the element matching the resource_name. 2640 InputText string `protobuf:"bytes,2,opt,name=input_text,json=inputText,proto3" json:"input_text,omitempty"` 2641 // Required. The type of action that Robo should perform on the specified 2642 // element. 2643 ActionType RoboActionType `protobuf:"varint,3,opt,name=action_type,json=actionType,proto3,enum=google.devtools.testing.v1.RoboActionType" json:"action_type,omitempty"` 2644} 2645 2646func (x *RoboDirective) Reset() { 2647 *x = RoboDirective{} 2648 if protoimpl.UnsafeEnabled { 2649 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[20] 2650 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2651 ms.StoreMessageInfo(mi) 2652 } 2653} 2654 2655func (x *RoboDirective) String() string { 2656 return protoimpl.X.MessageStringOf(x) 2657} 2658 2659func (*RoboDirective) ProtoMessage() {} 2660 2661func (x *RoboDirective) ProtoReflect() protoreflect.Message { 2662 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[20] 2663 if protoimpl.UnsafeEnabled && x != nil { 2664 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2665 if ms.LoadMessageInfo() == nil { 2666 ms.StoreMessageInfo(mi) 2667 } 2668 return ms 2669 } 2670 return mi.MessageOf(x) 2671} 2672 2673// Deprecated: Use RoboDirective.ProtoReflect.Descriptor instead. 2674func (*RoboDirective) Descriptor() ([]byte, []int) { 2675 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{20} 2676} 2677 2678func (x *RoboDirective) GetResourceName() string { 2679 if x != nil { 2680 return x.ResourceName 2681 } 2682 return "" 2683} 2684 2685func (x *RoboDirective) GetInputText() string { 2686 if x != nil { 2687 return x.InputText 2688 } 2689 return "" 2690} 2691 2692func (x *RoboDirective) GetActionType() RoboActionType { 2693 if x != nil { 2694 return x.ActionType 2695 } 2696 return RoboActionType_ACTION_TYPE_UNSPECIFIED 2697} 2698 2699// Message for specifying the start activities to crawl. 2700type RoboStartingIntent struct { 2701 state protoimpl.MessageState 2702 sizeCache protoimpl.SizeCache 2703 unknownFields protoimpl.UnknownFields 2704 2705 // Required. Intent details to start an activity. 2706 // 2707 // Types that are assignable to StartingIntent: 2708 // *RoboStartingIntent_LauncherActivity 2709 // *RoboStartingIntent_StartActivity 2710 StartingIntent isRoboStartingIntent_StartingIntent `protobuf_oneof:"starting_intent"` 2711 // Timeout in seconds for each intent. 2712 Timeout *durationpb.Duration `protobuf:"bytes,3,opt,name=timeout,proto3" json:"timeout,omitempty"` 2713} 2714 2715func (x *RoboStartingIntent) Reset() { 2716 *x = RoboStartingIntent{} 2717 if protoimpl.UnsafeEnabled { 2718 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[21] 2719 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2720 ms.StoreMessageInfo(mi) 2721 } 2722} 2723 2724func (x *RoboStartingIntent) String() string { 2725 return protoimpl.X.MessageStringOf(x) 2726} 2727 2728func (*RoboStartingIntent) ProtoMessage() {} 2729 2730func (x *RoboStartingIntent) ProtoReflect() protoreflect.Message { 2731 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[21] 2732 if protoimpl.UnsafeEnabled && x != nil { 2733 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2734 if ms.LoadMessageInfo() == nil { 2735 ms.StoreMessageInfo(mi) 2736 } 2737 return ms 2738 } 2739 return mi.MessageOf(x) 2740} 2741 2742// Deprecated: Use RoboStartingIntent.ProtoReflect.Descriptor instead. 2743func (*RoboStartingIntent) Descriptor() ([]byte, []int) { 2744 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{21} 2745} 2746 2747func (m *RoboStartingIntent) GetStartingIntent() isRoboStartingIntent_StartingIntent { 2748 if m != nil { 2749 return m.StartingIntent 2750 } 2751 return nil 2752} 2753 2754func (x *RoboStartingIntent) GetLauncherActivity() *LauncherActivityIntent { 2755 if x, ok := x.GetStartingIntent().(*RoboStartingIntent_LauncherActivity); ok { 2756 return x.LauncherActivity 2757 } 2758 return nil 2759} 2760 2761func (x *RoboStartingIntent) GetStartActivity() *StartActivityIntent { 2762 if x, ok := x.GetStartingIntent().(*RoboStartingIntent_StartActivity); ok { 2763 return x.StartActivity 2764 } 2765 return nil 2766} 2767 2768func (x *RoboStartingIntent) GetTimeout() *durationpb.Duration { 2769 if x != nil { 2770 return x.Timeout 2771 } 2772 return nil 2773} 2774 2775type isRoboStartingIntent_StartingIntent interface { 2776 isRoboStartingIntent_StartingIntent() 2777} 2778 2779type RoboStartingIntent_LauncherActivity struct { 2780 // An intent that starts the main launcher activity. 2781 LauncherActivity *LauncherActivityIntent `protobuf:"bytes,1,opt,name=launcher_activity,json=launcherActivity,proto3,oneof"` 2782} 2783 2784type RoboStartingIntent_StartActivity struct { 2785 // An intent that starts an activity with specific details. 2786 StartActivity *StartActivityIntent `protobuf:"bytes,2,opt,name=start_activity,json=startActivity,proto3,oneof"` 2787} 2788 2789func (*RoboStartingIntent_LauncherActivity) isRoboStartingIntent_StartingIntent() {} 2790 2791func (*RoboStartingIntent_StartActivity) isRoboStartingIntent_StartingIntent() {} 2792 2793// Specifies an intent that starts the main launcher activity. 2794type LauncherActivityIntent struct { 2795 state protoimpl.MessageState 2796 sizeCache protoimpl.SizeCache 2797 unknownFields protoimpl.UnknownFields 2798} 2799 2800func (x *LauncherActivityIntent) Reset() { 2801 *x = LauncherActivityIntent{} 2802 if protoimpl.UnsafeEnabled { 2803 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[22] 2804 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2805 ms.StoreMessageInfo(mi) 2806 } 2807} 2808 2809func (x *LauncherActivityIntent) String() string { 2810 return protoimpl.X.MessageStringOf(x) 2811} 2812 2813func (*LauncherActivityIntent) ProtoMessage() {} 2814 2815func (x *LauncherActivityIntent) ProtoReflect() protoreflect.Message { 2816 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[22] 2817 if protoimpl.UnsafeEnabled && x != nil { 2818 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2819 if ms.LoadMessageInfo() == nil { 2820 ms.StoreMessageInfo(mi) 2821 } 2822 return ms 2823 } 2824 return mi.MessageOf(x) 2825} 2826 2827// Deprecated: Use LauncherActivityIntent.ProtoReflect.Descriptor instead. 2828func (*LauncherActivityIntent) Descriptor() ([]byte, []int) { 2829 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{22} 2830} 2831 2832// A starting intent specified by an action, uri, and categories. 2833type StartActivityIntent struct { 2834 state protoimpl.MessageState 2835 sizeCache protoimpl.SizeCache 2836 unknownFields protoimpl.UnknownFields 2837 2838 // Action name. 2839 // Required for START_ACTIVITY. 2840 Action string `protobuf:"bytes,2,opt,name=action,proto3" json:"action,omitempty"` 2841 // URI for the action. 2842 Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"` 2843 // Intent categories to set on the intent. 2844 Categories []string `protobuf:"bytes,4,rep,name=categories,proto3" json:"categories,omitempty"` 2845} 2846 2847func (x *StartActivityIntent) Reset() { 2848 *x = StartActivityIntent{} 2849 if protoimpl.UnsafeEnabled { 2850 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[23] 2851 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2852 ms.StoreMessageInfo(mi) 2853 } 2854} 2855 2856func (x *StartActivityIntent) String() string { 2857 return protoimpl.X.MessageStringOf(x) 2858} 2859 2860func (*StartActivityIntent) ProtoMessage() {} 2861 2862func (x *StartActivityIntent) ProtoReflect() protoreflect.Message { 2863 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[23] 2864 if protoimpl.UnsafeEnabled && x != nil { 2865 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2866 if ms.LoadMessageInfo() == nil { 2867 ms.StoreMessageInfo(mi) 2868 } 2869 return ms 2870 } 2871 return mi.MessageOf(x) 2872} 2873 2874// Deprecated: Use StartActivityIntent.ProtoReflect.Descriptor instead. 2875func (*StartActivityIntent) Descriptor() ([]byte, []int) { 2876 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{23} 2877} 2878 2879func (x *StartActivityIntent) GetAction() string { 2880 if x != nil { 2881 return x.Action 2882 } 2883 return "" 2884} 2885 2886func (x *StartActivityIntent) GetUri() string { 2887 if x != nil { 2888 return x.Uri 2889 } 2890 return "" 2891} 2892 2893func (x *StartActivityIntent) GetCategories() []string { 2894 if x != nil { 2895 return x.Categories 2896 } 2897 return nil 2898} 2899 2900// The matrix of environments in which the test is to be executed. 2901type EnvironmentMatrix struct { 2902 state protoimpl.MessageState 2903 sizeCache protoimpl.SizeCache 2904 unknownFields protoimpl.UnknownFields 2905 2906 // Required. The environment matrix. 2907 // 2908 // Types that are assignable to EnvironmentMatrix: 2909 // *EnvironmentMatrix_AndroidMatrix 2910 // *EnvironmentMatrix_AndroidDeviceList 2911 // *EnvironmentMatrix_IosDeviceList 2912 EnvironmentMatrix isEnvironmentMatrix_EnvironmentMatrix `protobuf_oneof:"environment_matrix"` 2913} 2914 2915func (x *EnvironmentMatrix) Reset() { 2916 *x = EnvironmentMatrix{} 2917 if protoimpl.UnsafeEnabled { 2918 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[24] 2919 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2920 ms.StoreMessageInfo(mi) 2921 } 2922} 2923 2924func (x *EnvironmentMatrix) String() string { 2925 return protoimpl.X.MessageStringOf(x) 2926} 2927 2928func (*EnvironmentMatrix) ProtoMessage() {} 2929 2930func (x *EnvironmentMatrix) ProtoReflect() protoreflect.Message { 2931 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[24] 2932 if protoimpl.UnsafeEnabled && x != nil { 2933 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2934 if ms.LoadMessageInfo() == nil { 2935 ms.StoreMessageInfo(mi) 2936 } 2937 return ms 2938 } 2939 return mi.MessageOf(x) 2940} 2941 2942// Deprecated: Use EnvironmentMatrix.ProtoReflect.Descriptor instead. 2943func (*EnvironmentMatrix) Descriptor() ([]byte, []int) { 2944 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{24} 2945} 2946 2947func (m *EnvironmentMatrix) GetEnvironmentMatrix() isEnvironmentMatrix_EnvironmentMatrix { 2948 if m != nil { 2949 return m.EnvironmentMatrix 2950 } 2951 return nil 2952} 2953 2954func (x *EnvironmentMatrix) GetAndroidMatrix() *AndroidMatrix { 2955 if x, ok := x.GetEnvironmentMatrix().(*EnvironmentMatrix_AndroidMatrix); ok { 2956 return x.AndroidMatrix 2957 } 2958 return nil 2959} 2960 2961func (x *EnvironmentMatrix) GetAndroidDeviceList() *AndroidDeviceList { 2962 if x, ok := x.GetEnvironmentMatrix().(*EnvironmentMatrix_AndroidDeviceList); ok { 2963 return x.AndroidDeviceList 2964 } 2965 return nil 2966} 2967 2968func (x *EnvironmentMatrix) GetIosDeviceList() *IosDeviceList { 2969 if x, ok := x.GetEnvironmentMatrix().(*EnvironmentMatrix_IosDeviceList); ok { 2970 return x.IosDeviceList 2971 } 2972 return nil 2973} 2974 2975type isEnvironmentMatrix_EnvironmentMatrix interface { 2976 isEnvironmentMatrix_EnvironmentMatrix() 2977} 2978 2979type EnvironmentMatrix_AndroidMatrix struct { 2980 // A matrix of Android devices. 2981 AndroidMatrix *AndroidMatrix `protobuf:"bytes,1,opt,name=android_matrix,json=androidMatrix,proto3,oneof"` 2982} 2983 2984type EnvironmentMatrix_AndroidDeviceList struct { 2985 // A list of Android devices; the test will be run only on the specified 2986 // devices. 2987 AndroidDeviceList *AndroidDeviceList `protobuf:"bytes,2,opt,name=android_device_list,json=androidDeviceList,proto3,oneof"` 2988} 2989 2990type EnvironmentMatrix_IosDeviceList struct { 2991 // A list of iOS devices. 2992 IosDeviceList *IosDeviceList `protobuf:"bytes,3,opt,name=ios_device_list,json=iosDeviceList,proto3,oneof"` 2993} 2994 2995func (*EnvironmentMatrix_AndroidMatrix) isEnvironmentMatrix_EnvironmentMatrix() {} 2996 2997func (*EnvironmentMatrix_AndroidDeviceList) isEnvironmentMatrix_EnvironmentMatrix() {} 2998 2999func (*EnvironmentMatrix_IosDeviceList) isEnvironmentMatrix_EnvironmentMatrix() {} 3000 3001// A list of Android device configurations in which the test is to be executed. 3002type AndroidDeviceList struct { 3003 state protoimpl.MessageState 3004 sizeCache protoimpl.SizeCache 3005 unknownFields protoimpl.UnknownFields 3006 3007 // Required. A list of Android devices. 3008 AndroidDevices []*AndroidDevice `protobuf:"bytes,1,rep,name=android_devices,json=androidDevices,proto3" json:"android_devices,omitempty"` 3009} 3010 3011func (x *AndroidDeviceList) Reset() { 3012 *x = AndroidDeviceList{} 3013 if protoimpl.UnsafeEnabled { 3014 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[25] 3015 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3016 ms.StoreMessageInfo(mi) 3017 } 3018} 3019 3020func (x *AndroidDeviceList) String() string { 3021 return protoimpl.X.MessageStringOf(x) 3022} 3023 3024func (*AndroidDeviceList) ProtoMessage() {} 3025 3026func (x *AndroidDeviceList) ProtoReflect() protoreflect.Message { 3027 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[25] 3028 if protoimpl.UnsafeEnabled && x != nil { 3029 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3030 if ms.LoadMessageInfo() == nil { 3031 ms.StoreMessageInfo(mi) 3032 } 3033 return ms 3034 } 3035 return mi.MessageOf(x) 3036} 3037 3038// Deprecated: Use AndroidDeviceList.ProtoReflect.Descriptor instead. 3039func (*AndroidDeviceList) Descriptor() ([]byte, []int) { 3040 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{25} 3041} 3042 3043func (x *AndroidDeviceList) GetAndroidDevices() []*AndroidDevice { 3044 if x != nil { 3045 return x.AndroidDevices 3046 } 3047 return nil 3048} 3049 3050// A list of iOS device configurations in which the test is to be executed. 3051type IosDeviceList struct { 3052 state protoimpl.MessageState 3053 sizeCache protoimpl.SizeCache 3054 unknownFields protoimpl.UnknownFields 3055 3056 // Required. A list of iOS devices. 3057 IosDevices []*IosDevice `protobuf:"bytes,1,rep,name=ios_devices,json=iosDevices,proto3" json:"ios_devices,omitempty"` 3058} 3059 3060func (x *IosDeviceList) Reset() { 3061 *x = IosDeviceList{} 3062 if protoimpl.UnsafeEnabled { 3063 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[26] 3064 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3065 ms.StoreMessageInfo(mi) 3066 } 3067} 3068 3069func (x *IosDeviceList) String() string { 3070 return protoimpl.X.MessageStringOf(x) 3071} 3072 3073func (*IosDeviceList) ProtoMessage() {} 3074 3075func (x *IosDeviceList) ProtoReflect() protoreflect.Message { 3076 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[26] 3077 if protoimpl.UnsafeEnabled && x != nil { 3078 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3079 if ms.LoadMessageInfo() == nil { 3080 ms.StoreMessageInfo(mi) 3081 } 3082 return ms 3083 } 3084 return mi.MessageOf(x) 3085} 3086 3087// Deprecated: Use IosDeviceList.ProtoReflect.Descriptor instead. 3088func (*IosDeviceList) Descriptor() ([]byte, []int) { 3089 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{26} 3090} 3091 3092func (x *IosDeviceList) GetIosDevices() []*IosDevice { 3093 if x != nil { 3094 return x.IosDevices 3095 } 3096 return nil 3097} 3098 3099// A set of Android device configuration permutations is defined by the 3100// the cross-product of the given axes. Internally, the given AndroidMatrix 3101// will be expanded into a set of AndroidDevices. 3102// 3103// Only supported permutations will be instantiated. Invalid permutations 3104// (e.g., incompatible models/versions) are ignored. 3105type AndroidMatrix struct { 3106 state protoimpl.MessageState 3107 sizeCache protoimpl.SizeCache 3108 unknownFields protoimpl.UnknownFields 3109 3110 // Required. The ids of the set of Android device to be used. 3111 // Use the TestEnvironmentDiscoveryService to get supported options. 3112 AndroidModelIds []string `protobuf:"bytes,1,rep,name=android_model_ids,json=androidModelIds,proto3" json:"android_model_ids,omitempty"` 3113 // Required. The ids of the set of Android OS version to be used. 3114 // Use the TestEnvironmentDiscoveryService to get supported options. 3115 AndroidVersionIds []string `protobuf:"bytes,2,rep,name=android_version_ids,json=androidVersionIds,proto3" json:"android_version_ids,omitempty"` 3116 // Required. The set of locales the test device will enable for testing. 3117 // Use the TestEnvironmentDiscoveryService to get supported options. 3118 Locales []string `protobuf:"bytes,3,rep,name=locales,proto3" json:"locales,omitempty"` 3119 // Required. The set of orientations to test with. 3120 // Use the TestEnvironmentDiscoveryService to get supported options. 3121 Orientations []string `protobuf:"bytes,4,rep,name=orientations,proto3" json:"orientations,omitempty"` 3122} 3123 3124func (x *AndroidMatrix) Reset() { 3125 *x = AndroidMatrix{} 3126 if protoimpl.UnsafeEnabled { 3127 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[27] 3128 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3129 ms.StoreMessageInfo(mi) 3130 } 3131} 3132 3133func (x *AndroidMatrix) String() string { 3134 return protoimpl.X.MessageStringOf(x) 3135} 3136 3137func (*AndroidMatrix) ProtoMessage() {} 3138 3139func (x *AndroidMatrix) ProtoReflect() protoreflect.Message { 3140 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[27] 3141 if protoimpl.UnsafeEnabled && x != nil { 3142 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3143 if ms.LoadMessageInfo() == nil { 3144 ms.StoreMessageInfo(mi) 3145 } 3146 return ms 3147 } 3148 return mi.MessageOf(x) 3149} 3150 3151// Deprecated: Use AndroidMatrix.ProtoReflect.Descriptor instead. 3152func (*AndroidMatrix) Descriptor() ([]byte, []int) { 3153 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{27} 3154} 3155 3156func (x *AndroidMatrix) GetAndroidModelIds() []string { 3157 if x != nil { 3158 return x.AndroidModelIds 3159 } 3160 return nil 3161} 3162 3163func (x *AndroidMatrix) GetAndroidVersionIds() []string { 3164 if x != nil { 3165 return x.AndroidVersionIds 3166 } 3167 return nil 3168} 3169 3170func (x *AndroidMatrix) GetLocales() []string { 3171 if x != nil { 3172 return x.Locales 3173 } 3174 return nil 3175} 3176 3177func (x *AndroidMatrix) GetOrientations() []string { 3178 if x != nil { 3179 return x.Orientations 3180 } 3181 return nil 3182} 3183 3184// Information about the client which invoked the test. 3185type ClientInfo struct { 3186 state protoimpl.MessageState 3187 sizeCache protoimpl.SizeCache 3188 unknownFields protoimpl.UnknownFields 3189 3190 // Required. Client name, such as gcloud. 3191 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 3192 // The list of detailed information about client. 3193 ClientInfoDetails []*ClientInfoDetail `protobuf:"bytes,2,rep,name=client_info_details,json=clientInfoDetails,proto3" json:"client_info_details,omitempty"` 3194} 3195 3196func (x *ClientInfo) Reset() { 3197 *x = ClientInfo{} 3198 if protoimpl.UnsafeEnabled { 3199 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[28] 3200 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3201 ms.StoreMessageInfo(mi) 3202 } 3203} 3204 3205func (x *ClientInfo) String() string { 3206 return protoimpl.X.MessageStringOf(x) 3207} 3208 3209func (*ClientInfo) ProtoMessage() {} 3210 3211func (x *ClientInfo) ProtoReflect() protoreflect.Message { 3212 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[28] 3213 if protoimpl.UnsafeEnabled && x != nil { 3214 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3215 if ms.LoadMessageInfo() == nil { 3216 ms.StoreMessageInfo(mi) 3217 } 3218 return ms 3219 } 3220 return mi.MessageOf(x) 3221} 3222 3223// Deprecated: Use ClientInfo.ProtoReflect.Descriptor instead. 3224func (*ClientInfo) Descriptor() ([]byte, []int) { 3225 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{28} 3226} 3227 3228func (x *ClientInfo) GetName() string { 3229 if x != nil { 3230 return x.Name 3231 } 3232 return "" 3233} 3234 3235func (x *ClientInfo) GetClientInfoDetails() []*ClientInfoDetail { 3236 if x != nil { 3237 return x.ClientInfoDetails 3238 } 3239 return nil 3240} 3241 3242// Key-value pair of detailed information about the client which invoked the 3243// test. Examples: {'Version', '1.0'}, {'Release Track', 'BETA'}. 3244type ClientInfoDetail struct { 3245 state protoimpl.MessageState 3246 sizeCache protoimpl.SizeCache 3247 unknownFields protoimpl.UnknownFields 3248 3249 // Required. The key of detailed client information. 3250 Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` 3251 // Required. The value of detailed client information. 3252 Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` 3253} 3254 3255func (x *ClientInfoDetail) Reset() { 3256 *x = ClientInfoDetail{} 3257 if protoimpl.UnsafeEnabled { 3258 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[29] 3259 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3260 ms.StoreMessageInfo(mi) 3261 } 3262} 3263 3264func (x *ClientInfoDetail) String() string { 3265 return protoimpl.X.MessageStringOf(x) 3266} 3267 3268func (*ClientInfoDetail) ProtoMessage() {} 3269 3270func (x *ClientInfoDetail) ProtoReflect() protoreflect.Message { 3271 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[29] 3272 if protoimpl.UnsafeEnabled && x != nil { 3273 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3274 if ms.LoadMessageInfo() == nil { 3275 ms.StoreMessageInfo(mi) 3276 } 3277 return ms 3278 } 3279 return mi.MessageOf(x) 3280} 3281 3282// Deprecated: Use ClientInfoDetail.ProtoReflect.Descriptor instead. 3283func (*ClientInfoDetail) Descriptor() ([]byte, []int) { 3284 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{29} 3285} 3286 3287func (x *ClientInfoDetail) GetKey() string { 3288 if x != nil { 3289 return x.Key 3290 } 3291 return "" 3292} 3293 3294func (x *ClientInfoDetail) GetValue() string { 3295 if x != nil { 3296 return x.Value 3297 } 3298 return "" 3299} 3300 3301// Locations where the results of running the test are stored. 3302type ResultStorage struct { 3303 state protoimpl.MessageState 3304 sizeCache protoimpl.SizeCache 3305 unknownFields protoimpl.UnknownFields 3306 3307 // Required. 3308 GoogleCloudStorage *GoogleCloudStorage `protobuf:"bytes,1,opt,name=google_cloud_storage,json=googleCloudStorage,proto3" json:"google_cloud_storage,omitempty"` 3309 // The tool results history that contains the tool results execution that 3310 // results are written to. 3311 // 3312 // If not provided, the service will choose an appropriate value. 3313 ToolResultsHistory *ToolResultsHistory `protobuf:"bytes,5,opt,name=tool_results_history,json=toolResultsHistory,proto3" json:"tool_results_history,omitempty"` 3314 // Output only. The tool results execution that results are written to. 3315 ToolResultsExecution *ToolResultsExecution `protobuf:"bytes,6,opt,name=tool_results_execution,json=toolResultsExecution,proto3" json:"tool_results_execution,omitempty"` 3316 // Output only. URL to the results in the Firebase Web Console. 3317 ResultsUrl string `protobuf:"bytes,7,opt,name=results_url,json=resultsUrl,proto3" json:"results_url,omitempty"` 3318} 3319 3320func (x *ResultStorage) Reset() { 3321 *x = ResultStorage{} 3322 if protoimpl.UnsafeEnabled { 3323 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[30] 3324 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3325 ms.StoreMessageInfo(mi) 3326 } 3327} 3328 3329func (x *ResultStorage) String() string { 3330 return protoimpl.X.MessageStringOf(x) 3331} 3332 3333func (*ResultStorage) ProtoMessage() {} 3334 3335func (x *ResultStorage) ProtoReflect() protoreflect.Message { 3336 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[30] 3337 if protoimpl.UnsafeEnabled && x != nil { 3338 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3339 if ms.LoadMessageInfo() == nil { 3340 ms.StoreMessageInfo(mi) 3341 } 3342 return ms 3343 } 3344 return mi.MessageOf(x) 3345} 3346 3347// Deprecated: Use ResultStorage.ProtoReflect.Descriptor instead. 3348func (*ResultStorage) Descriptor() ([]byte, []int) { 3349 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{30} 3350} 3351 3352func (x *ResultStorage) GetGoogleCloudStorage() *GoogleCloudStorage { 3353 if x != nil { 3354 return x.GoogleCloudStorage 3355 } 3356 return nil 3357} 3358 3359func (x *ResultStorage) GetToolResultsHistory() *ToolResultsHistory { 3360 if x != nil { 3361 return x.ToolResultsHistory 3362 } 3363 return nil 3364} 3365 3366func (x *ResultStorage) GetToolResultsExecution() *ToolResultsExecution { 3367 if x != nil { 3368 return x.ToolResultsExecution 3369 } 3370 return nil 3371} 3372 3373func (x *ResultStorage) GetResultsUrl() string { 3374 if x != nil { 3375 return x.ResultsUrl 3376 } 3377 return "" 3378} 3379 3380// Represents a tool results history resource. 3381type ToolResultsHistory struct { 3382 state protoimpl.MessageState 3383 sizeCache protoimpl.SizeCache 3384 unknownFields protoimpl.UnknownFields 3385 3386 // Required. The cloud project that owns the tool results history. 3387 ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` 3388 // Required. A tool results history ID. 3389 HistoryId string `protobuf:"bytes,2,opt,name=history_id,json=historyId,proto3" json:"history_id,omitempty"` 3390} 3391 3392func (x *ToolResultsHistory) Reset() { 3393 *x = ToolResultsHistory{} 3394 if protoimpl.UnsafeEnabled { 3395 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[31] 3396 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3397 ms.StoreMessageInfo(mi) 3398 } 3399} 3400 3401func (x *ToolResultsHistory) String() string { 3402 return protoimpl.X.MessageStringOf(x) 3403} 3404 3405func (*ToolResultsHistory) ProtoMessage() {} 3406 3407func (x *ToolResultsHistory) ProtoReflect() protoreflect.Message { 3408 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[31] 3409 if protoimpl.UnsafeEnabled && x != nil { 3410 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3411 if ms.LoadMessageInfo() == nil { 3412 ms.StoreMessageInfo(mi) 3413 } 3414 return ms 3415 } 3416 return mi.MessageOf(x) 3417} 3418 3419// Deprecated: Use ToolResultsHistory.ProtoReflect.Descriptor instead. 3420func (*ToolResultsHistory) Descriptor() ([]byte, []int) { 3421 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{31} 3422} 3423 3424func (x *ToolResultsHistory) GetProjectId() string { 3425 if x != nil { 3426 return x.ProjectId 3427 } 3428 return "" 3429} 3430 3431func (x *ToolResultsHistory) GetHistoryId() string { 3432 if x != nil { 3433 return x.HistoryId 3434 } 3435 return "" 3436} 3437 3438// Represents a tool results execution resource. 3439// 3440// This has the results of a TestMatrix. 3441type ToolResultsExecution struct { 3442 state protoimpl.MessageState 3443 sizeCache protoimpl.SizeCache 3444 unknownFields protoimpl.UnknownFields 3445 3446 // Output only. The cloud project that owns the tool results execution. 3447 ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` 3448 // Output only. A tool results history ID. 3449 HistoryId string `protobuf:"bytes,2,opt,name=history_id,json=historyId,proto3" json:"history_id,omitempty"` 3450 // Output only. A tool results execution ID. 3451 ExecutionId string `protobuf:"bytes,3,opt,name=execution_id,json=executionId,proto3" json:"execution_id,omitempty"` 3452} 3453 3454func (x *ToolResultsExecution) Reset() { 3455 *x = ToolResultsExecution{} 3456 if protoimpl.UnsafeEnabled { 3457 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[32] 3458 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3459 ms.StoreMessageInfo(mi) 3460 } 3461} 3462 3463func (x *ToolResultsExecution) String() string { 3464 return protoimpl.X.MessageStringOf(x) 3465} 3466 3467func (*ToolResultsExecution) ProtoMessage() {} 3468 3469func (x *ToolResultsExecution) ProtoReflect() protoreflect.Message { 3470 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[32] 3471 if protoimpl.UnsafeEnabled && x != nil { 3472 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3473 if ms.LoadMessageInfo() == nil { 3474 ms.StoreMessageInfo(mi) 3475 } 3476 return ms 3477 } 3478 return mi.MessageOf(x) 3479} 3480 3481// Deprecated: Use ToolResultsExecution.ProtoReflect.Descriptor instead. 3482func (*ToolResultsExecution) Descriptor() ([]byte, []int) { 3483 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{32} 3484} 3485 3486func (x *ToolResultsExecution) GetProjectId() string { 3487 if x != nil { 3488 return x.ProjectId 3489 } 3490 return "" 3491} 3492 3493func (x *ToolResultsExecution) GetHistoryId() string { 3494 if x != nil { 3495 return x.HistoryId 3496 } 3497 return "" 3498} 3499 3500func (x *ToolResultsExecution) GetExecutionId() string { 3501 if x != nil { 3502 return x.ExecutionId 3503 } 3504 return "" 3505} 3506 3507// Represents a tool results step resource. 3508// 3509// This has the results of a TestExecution. 3510type ToolResultsStep struct { 3511 state protoimpl.MessageState 3512 sizeCache protoimpl.SizeCache 3513 unknownFields protoimpl.UnknownFields 3514 3515 // Output only. The cloud project that owns the tool results step. 3516 ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` 3517 // Output only. A tool results history ID. 3518 HistoryId string `protobuf:"bytes,2,opt,name=history_id,json=historyId,proto3" json:"history_id,omitempty"` 3519 // Output only. A tool results execution ID. 3520 ExecutionId string `protobuf:"bytes,3,opt,name=execution_id,json=executionId,proto3" json:"execution_id,omitempty"` 3521 // Output only. A tool results step ID. 3522 StepId string `protobuf:"bytes,4,opt,name=step_id,json=stepId,proto3" json:"step_id,omitempty"` 3523} 3524 3525func (x *ToolResultsStep) Reset() { 3526 *x = ToolResultsStep{} 3527 if protoimpl.UnsafeEnabled { 3528 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[33] 3529 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3530 ms.StoreMessageInfo(mi) 3531 } 3532} 3533 3534func (x *ToolResultsStep) String() string { 3535 return protoimpl.X.MessageStringOf(x) 3536} 3537 3538func (*ToolResultsStep) ProtoMessage() {} 3539 3540func (x *ToolResultsStep) ProtoReflect() protoreflect.Message { 3541 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[33] 3542 if protoimpl.UnsafeEnabled && x != nil { 3543 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3544 if ms.LoadMessageInfo() == nil { 3545 ms.StoreMessageInfo(mi) 3546 } 3547 return ms 3548 } 3549 return mi.MessageOf(x) 3550} 3551 3552// Deprecated: Use ToolResultsStep.ProtoReflect.Descriptor instead. 3553func (*ToolResultsStep) Descriptor() ([]byte, []int) { 3554 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{33} 3555} 3556 3557func (x *ToolResultsStep) GetProjectId() string { 3558 if x != nil { 3559 return x.ProjectId 3560 } 3561 return "" 3562} 3563 3564func (x *ToolResultsStep) GetHistoryId() string { 3565 if x != nil { 3566 return x.HistoryId 3567 } 3568 return "" 3569} 3570 3571func (x *ToolResultsStep) GetExecutionId() string { 3572 if x != nil { 3573 return x.ExecutionId 3574 } 3575 return "" 3576} 3577 3578func (x *ToolResultsStep) GetStepId() string { 3579 if x != nil { 3580 return x.StepId 3581 } 3582 return "" 3583} 3584 3585// A storage location within Google cloud storage (GCS). 3586type GoogleCloudStorage struct { 3587 state protoimpl.MessageState 3588 sizeCache protoimpl.SizeCache 3589 unknownFields protoimpl.UnknownFields 3590 3591 // Required. The path to a directory in GCS that will 3592 // eventually contain the results for this test. 3593 // The requesting user must have write access on the bucket in the supplied 3594 // path. 3595 GcsPath string `protobuf:"bytes,1,opt,name=gcs_path,json=gcsPath,proto3" json:"gcs_path,omitempty"` 3596} 3597 3598func (x *GoogleCloudStorage) Reset() { 3599 *x = GoogleCloudStorage{} 3600 if protoimpl.UnsafeEnabled { 3601 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[34] 3602 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3603 ms.StoreMessageInfo(mi) 3604 } 3605} 3606 3607func (x *GoogleCloudStorage) String() string { 3608 return protoimpl.X.MessageStringOf(x) 3609} 3610 3611func (*GoogleCloudStorage) ProtoMessage() {} 3612 3613func (x *GoogleCloudStorage) ProtoReflect() protoreflect.Message { 3614 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[34] 3615 if protoimpl.UnsafeEnabled && x != nil { 3616 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3617 if ms.LoadMessageInfo() == nil { 3618 ms.StoreMessageInfo(mi) 3619 } 3620 return ms 3621 } 3622 return mi.MessageOf(x) 3623} 3624 3625// Deprecated: Use GoogleCloudStorage.ProtoReflect.Descriptor instead. 3626func (*GoogleCloudStorage) Descriptor() ([]byte, []int) { 3627 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{34} 3628} 3629 3630func (x *GoogleCloudStorage) GetGcsPath() string { 3631 if x != nil { 3632 return x.GcsPath 3633 } 3634 return "" 3635} 3636 3637// A reference to a file, used for user inputs. 3638type FileReference struct { 3639 state protoimpl.MessageState 3640 sizeCache protoimpl.SizeCache 3641 unknownFields protoimpl.UnknownFields 3642 3643 // Required. The file reference. 3644 // 3645 // Types that are assignable to File: 3646 // *FileReference_GcsPath 3647 File isFileReference_File `protobuf_oneof:"file"` 3648} 3649 3650func (x *FileReference) Reset() { 3651 *x = FileReference{} 3652 if protoimpl.UnsafeEnabled { 3653 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[35] 3654 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3655 ms.StoreMessageInfo(mi) 3656 } 3657} 3658 3659func (x *FileReference) String() string { 3660 return protoimpl.X.MessageStringOf(x) 3661} 3662 3663func (*FileReference) ProtoMessage() {} 3664 3665func (x *FileReference) ProtoReflect() protoreflect.Message { 3666 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[35] 3667 if protoimpl.UnsafeEnabled && x != nil { 3668 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3669 if ms.LoadMessageInfo() == nil { 3670 ms.StoreMessageInfo(mi) 3671 } 3672 return ms 3673 } 3674 return mi.MessageOf(x) 3675} 3676 3677// Deprecated: Use FileReference.ProtoReflect.Descriptor instead. 3678func (*FileReference) Descriptor() ([]byte, []int) { 3679 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{35} 3680} 3681 3682func (m *FileReference) GetFile() isFileReference_File { 3683 if m != nil { 3684 return m.File 3685 } 3686 return nil 3687} 3688 3689func (x *FileReference) GetGcsPath() string { 3690 if x, ok := x.GetFile().(*FileReference_GcsPath); ok { 3691 return x.GcsPath 3692 } 3693 return "" 3694} 3695 3696type isFileReference_File interface { 3697 isFileReference_File() 3698} 3699 3700type FileReference_GcsPath struct { 3701 // A path to a file in Google Cloud Storage. 3702 // Example: gs://build-app-1414623860166/app%40debug-unaligned.apk 3703 // These paths are expected to be url encoded (percent encoding) 3704 GcsPath string `protobuf:"bytes,1,opt,name=gcs_path,json=gcsPath,proto3,oneof"` 3705} 3706 3707func (*FileReference_GcsPath) isFileReference_File() {} 3708 3709// The environment in which the test is run. 3710type Environment struct { 3711 state protoimpl.MessageState 3712 sizeCache protoimpl.SizeCache 3713 unknownFields protoimpl.UnknownFields 3714 3715 // Required. The environment. 3716 // 3717 // Types that are assignable to Environment: 3718 // *Environment_AndroidDevice 3719 // *Environment_IosDevice 3720 Environment isEnvironment_Environment `protobuf_oneof:"environment"` 3721} 3722 3723func (x *Environment) Reset() { 3724 *x = Environment{} 3725 if protoimpl.UnsafeEnabled { 3726 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[36] 3727 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3728 ms.StoreMessageInfo(mi) 3729 } 3730} 3731 3732func (x *Environment) String() string { 3733 return protoimpl.X.MessageStringOf(x) 3734} 3735 3736func (*Environment) ProtoMessage() {} 3737 3738func (x *Environment) ProtoReflect() protoreflect.Message { 3739 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[36] 3740 if protoimpl.UnsafeEnabled && x != nil { 3741 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3742 if ms.LoadMessageInfo() == nil { 3743 ms.StoreMessageInfo(mi) 3744 } 3745 return ms 3746 } 3747 return mi.MessageOf(x) 3748} 3749 3750// Deprecated: Use Environment.ProtoReflect.Descriptor instead. 3751func (*Environment) Descriptor() ([]byte, []int) { 3752 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{36} 3753} 3754 3755func (m *Environment) GetEnvironment() isEnvironment_Environment { 3756 if m != nil { 3757 return m.Environment 3758 } 3759 return nil 3760} 3761 3762func (x *Environment) GetAndroidDevice() *AndroidDevice { 3763 if x, ok := x.GetEnvironment().(*Environment_AndroidDevice); ok { 3764 return x.AndroidDevice 3765 } 3766 return nil 3767} 3768 3769func (x *Environment) GetIosDevice() *IosDevice { 3770 if x, ok := x.GetEnvironment().(*Environment_IosDevice); ok { 3771 return x.IosDevice 3772 } 3773 return nil 3774} 3775 3776type isEnvironment_Environment interface { 3777 isEnvironment_Environment() 3778} 3779 3780type Environment_AndroidDevice struct { 3781 // An Android device which must be used with an Android test. 3782 AndroidDevice *AndroidDevice `protobuf:"bytes,1,opt,name=android_device,json=androidDevice,proto3,oneof"` 3783} 3784 3785type Environment_IosDevice struct { 3786 // An iOS device which must be used with an iOS test. 3787 IosDevice *IosDevice `protobuf:"bytes,2,opt,name=ios_device,json=iosDevice,proto3,oneof"` 3788} 3789 3790func (*Environment_AndroidDevice) isEnvironment_Environment() {} 3791 3792func (*Environment_IosDevice) isEnvironment_Environment() {} 3793 3794// A single Android device. 3795type AndroidDevice struct { 3796 state protoimpl.MessageState 3797 sizeCache protoimpl.SizeCache 3798 unknownFields protoimpl.UnknownFields 3799 3800 // Required. The id of the Android device to be used. 3801 // Use the TestEnvironmentDiscoveryService to get supported options. 3802 AndroidModelId string `protobuf:"bytes,1,opt,name=android_model_id,json=androidModelId,proto3" json:"android_model_id,omitempty"` 3803 // Required. The id of the Android OS version to be used. 3804 // Use the TestEnvironmentDiscoveryService to get supported options. 3805 AndroidVersionId string `protobuf:"bytes,2,opt,name=android_version_id,json=androidVersionId,proto3" json:"android_version_id,omitempty"` 3806 // Required. The locale the test device used for testing. 3807 // Use the TestEnvironmentDiscoveryService to get supported options. 3808 Locale string `protobuf:"bytes,3,opt,name=locale,proto3" json:"locale,omitempty"` 3809 // Required. How the device is oriented during the test. 3810 // Use the TestEnvironmentDiscoveryService to get supported options. 3811 Orientation string `protobuf:"bytes,4,opt,name=orientation,proto3" json:"orientation,omitempty"` 3812} 3813 3814func (x *AndroidDevice) Reset() { 3815 *x = AndroidDevice{} 3816 if protoimpl.UnsafeEnabled { 3817 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[37] 3818 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3819 ms.StoreMessageInfo(mi) 3820 } 3821} 3822 3823func (x *AndroidDevice) String() string { 3824 return protoimpl.X.MessageStringOf(x) 3825} 3826 3827func (*AndroidDevice) ProtoMessage() {} 3828 3829func (x *AndroidDevice) ProtoReflect() protoreflect.Message { 3830 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[37] 3831 if protoimpl.UnsafeEnabled && x != nil { 3832 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3833 if ms.LoadMessageInfo() == nil { 3834 ms.StoreMessageInfo(mi) 3835 } 3836 return ms 3837 } 3838 return mi.MessageOf(x) 3839} 3840 3841// Deprecated: Use AndroidDevice.ProtoReflect.Descriptor instead. 3842func (*AndroidDevice) Descriptor() ([]byte, []int) { 3843 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{37} 3844} 3845 3846func (x *AndroidDevice) GetAndroidModelId() string { 3847 if x != nil { 3848 return x.AndroidModelId 3849 } 3850 return "" 3851} 3852 3853func (x *AndroidDevice) GetAndroidVersionId() string { 3854 if x != nil { 3855 return x.AndroidVersionId 3856 } 3857 return "" 3858} 3859 3860func (x *AndroidDevice) GetLocale() string { 3861 if x != nil { 3862 return x.Locale 3863 } 3864 return "" 3865} 3866 3867func (x *AndroidDevice) GetOrientation() string { 3868 if x != nil { 3869 return x.Orientation 3870 } 3871 return "" 3872} 3873 3874// A single iOS device. 3875type IosDevice struct { 3876 state protoimpl.MessageState 3877 sizeCache protoimpl.SizeCache 3878 unknownFields protoimpl.UnknownFields 3879 3880 // Required. The id of the iOS device to be used. 3881 // Use the TestEnvironmentDiscoveryService to get supported options. 3882 IosModelId string `protobuf:"bytes,1,opt,name=ios_model_id,json=iosModelId,proto3" json:"ios_model_id,omitempty"` 3883 // Required. The id of the iOS major software version to be used. 3884 // Use the TestEnvironmentDiscoveryService to get supported options. 3885 IosVersionId string `protobuf:"bytes,2,opt,name=ios_version_id,json=iosVersionId,proto3" json:"ios_version_id,omitempty"` 3886 // Required. The locale the test device used for testing. 3887 // Use the TestEnvironmentDiscoveryService to get supported options. 3888 Locale string `protobuf:"bytes,3,opt,name=locale,proto3" json:"locale,omitempty"` 3889 // Required. How the device is oriented during the test. 3890 // Use the TestEnvironmentDiscoveryService to get supported options. 3891 Orientation string `protobuf:"bytes,4,opt,name=orientation,proto3" json:"orientation,omitempty"` 3892} 3893 3894func (x *IosDevice) Reset() { 3895 *x = IosDevice{} 3896 if protoimpl.UnsafeEnabled { 3897 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[38] 3898 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3899 ms.StoreMessageInfo(mi) 3900 } 3901} 3902 3903func (x *IosDevice) String() string { 3904 return protoimpl.X.MessageStringOf(x) 3905} 3906 3907func (*IosDevice) ProtoMessage() {} 3908 3909func (x *IosDevice) ProtoReflect() protoreflect.Message { 3910 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[38] 3911 if protoimpl.UnsafeEnabled && x != nil { 3912 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3913 if ms.LoadMessageInfo() == nil { 3914 ms.StoreMessageInfo(mi) 3915 } 3916 return ms 3917 } 3918 return mi.MessageOf(x) 3919} 3920 3921// Deprecated: Use IosDevice.ProtoReflect.Descriptor instead. 3922func (*IosDevice) Descriptor() ([]byte, []int) { 3923 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{38} 3924} 3925 3926func (x *IosDevice) GetIosModelId() string { 3927 if x != nil { 3928 return x.IosModelId 3929 } 3930 return "" 3931} 3932 3933func (x *IosDevice) GetIosVersionId() string { 3934 if x != nil { 3935 return x.IosVersionId 3936 } 3937 return "" 3938} 3939 3940func (x *IosDevice) GetLocale() string { 3941 if x != nil { 3942 return x.Locale 3943 } 3944 return "" 3945} 3946 3947func (x *IosDevice) GetOrientation() string { 3948 if x != nil { 3949 return x.Orientation 3950 } 3951 return "" 3952} 3953 3954// Additional details about the progress of the running test. 3955type TestDetails struct { 3956 state protoimpl.MessageState 3957 sizeCache protoimpl.SizeCache 3958 unknownFields protoimpl.UnknownFields 3959 3960 // Output only. Human-readable, detailed descriptions of the test's progress. 3961 // For example: "Provisioning a device", "Starting Test". 3962 // 3963 // During the course of execution new data may be appended 3964 // to the end of progress_messages. 3965 ProgressMessages []string `protobuf:"bytes,3,rep,name=progress_messages,json=progressMessages,proto3" json:"progress_messages,omitempty"` 3966 // Output only. If the TestState is ERROR, then this string will contain 3967 // human-readable details about the error. 3968 ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` 3969} 3970 3971func (x *TestDetails) Reset() { 3972 *x = TestDetails{} 3973 if protoimpl.UnsafeEnabled { 3974 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[39] 3975 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3976 ms.StoreMessageInfo(mi) 3977 } 3978} 3979 3980func (x *TestDetails) String() string { 3981 return protoimpl.X.MessageStringOf(x) 3982} 3983 3984func (*TestDetails) ProtoMessage() {} 3985 3986func (x *TestDetails) ProtoReflect() protoreflect.Message { 3987 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[39] 3988 if protoimpl.UnsafeEnabled && x != nil { 3989 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3990 if ms.LoadMessageInfo() == nil { 3991 ms.StoreMessageInfo(mi) 3992 } 3993 return ms 3994 } 3995 return mi.MessageOf(x) 3996} 3997 3998// Deprecated: Use TestDetails.ProtoReflect.Descriptor instead. 3999func (*TestDetails) Descriptor() ([]byte, []int) { 4000 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{39} 4001} 4002 4003func (x *TestDetails) GetProgressMessages() []string { 4004 if x != nil { 4005 return x.ProgressMessages 4006 } 4007 return nil 4008} 4009 4010func (x *TestDetails) GetErrorMessage() string { 4011 if x != nil { 4012 return x.ErrorMessage 4013 } 4014 return "" 4015} 4016 4017// Details behind an invalid request. 4018type InvalidRequestDetail struct { 4019 state protoimpl.MessageState 4020 sizeCache protoimpl.SizeCache 4021 unknownFields protoimpl.UnknownFields 4022 4023 // The reason behind the error. 4024 Reason InvalidRequestDetail_Reason `protobuf:"varint,1,opt,name=reason,proto3,enum=google.devtools.testing.v1.InvalidRequestDetail_Reason" json:"reason,omitempty"` 4025} 4026 4027func (x *InvalidRequestDetail) Reset() { 4028 *x = InvalidRequestDetail{} 4029 if protoimpl.UnsafeEnabled { 4030 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[40] 4031 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4032 ms.StoreMessageInfo(mi) 4033 } 4034} 4035 4036func (x *InvalidRequestDetail) String() string { 4037 return protoimpl.X.MessageStringOf(x) 4038} 4039 4040func (*InvalidRequestDetail) ProtoMessage() {} 4041 4042func (x *InvalidRequestDetail) ProtoReflect() protoreflect.Message { 4043 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[40] 4044 if protoimpl.UnsafeEnabled && x != nil { 4045 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4046 if ms.LoadMessageInfo() == nil { 4047 ms.StoreMessageInfo(mi) 4048 } 4049 return ms 4050 } 4051 return mi.MessageOf(x) 4052} 4053 4054// Deprecated: Use InvalidRequestDetail.ProtoReflect.Descriptor instead. 4055func (*InvalidRequestDetail) Descriptor() ([]byte, []int) { 4056 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{40} 4057} 4058 4059func (x *InvalidRequestDetail) GetReason() InvalidRequestDetail_Reason { 4060 if x != nil { 4061 return x.Reason 4062 } 4063 return InvalidRequestDetail_REASON_UNSPECIFIED 4064} 4065 4066// Options for enabling sharding. 4067type ShardingOption struct { 4068 state protoimpl.MessageState 4069 sizeCache protoimpl.SizeCache 4070 unknownFields protoimpl.UnknownFields 4071 4072 // Types that are assignable to Option: 4073 // *ShardingOption_UniformSharding 4074 // *ShardingOption_ManualSharding 4075 Option isShardingOption_Option `protobuf_oneof:"option"` 4076} 4077 4078func (x *ShardingOption) Reset() { 4079 *x = ShardingOption{} 4080 if protoimpl.UnsafeEnabled { 4081 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[41] 4082 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4083 ms.StoreMessageInfo(mi) 4084 } 4085} 4086 4087func (x *ShardingOption) String() string { 4088 return protoimpl.X.MessageStringOf(x) 4089} 4090 4091func (*ShardingOption) ProtoMessage() {} 4092 4093func (x *ShardingOption) ProtoReflect() protoreflect.Message { 4094 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[41] 4095 if protoimpl.UnsafeEnabled && x != nil { 4096 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4097 if ms.LoadMessageInfo() == nil { 4098 ms.StoreMessageInfo(mi) 4099 } 4100 return ms 4101 } 4102 return mi.MessageOf(x) 4103} 4104 4105// Deprecated: Use ShardingOption.ProtoReflect.Descriptor instead. 4106func (*ShardingOption) Descriptor() ([]byte, []int) { 4107 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{41} 4108} 4109 4110func (m *ShardingOption) GetOption() isShardingOption_Option { 4111 if m != nil { 4112 return m.Option 4113 } 4114 return nil 4115} 4116 4117func (x *ShardingOption) GetUniformSharding() *UniformSharding { 4118 if x, ok := x.GetOption().(*ShardingOption_UniformSharding); ok { 4119 return x.UniformSharding 4120 } 4121 return nil 4122} 4123 4124func (x *ShardingOption) GetManualSharding() *ManualSharding { 4125 if x, ok := x.GetOption().(*ShardingOption_ManualSharding); ok { 4126 return x.ManualSharding 4127 } 4128 return nil 4129} 4130 4131type isShardingOption_Option interface { 4132 isShardingOption_Option() 4133} 4134 4135type ShardingOption_UniformSharding struct { 4136 // Uniformly shards test cases given a total number of shards. 4137 UniformSharding *UniformSharding `protobuf:"bytes,1,opt,name=uniform_sharding,json=uniformSharding,proto3,oneof"` 4138} 4139 4140type ShardingOption_ManualSharding struct { 4141 // Shards test cases into the specified groups of packages, classes, and/or 4142 // methods. 4143 ManualSharding *ManualSharding `protobuf:"bytes,2,opt,name=manual_sharding,json=manualSharding,proto3,oneof"` 4144} 4145 4146func (*ShardingOption_UniformSharding) isShardingOption_Option() {} 4147 4148func (*ShardingOption_ManualSharding) isShardingOption_Option() {} 4149 4150// Uniformly shards test cases given a total number of shards. 4151// 4152// For Instrumentation test, it will be translated to "-e numShard" "-e 4153// shardIndex" AndroidJUnitRunner arguments. With uniform sharding enabled, 4154// specifying these sharding arguments via environment_variables is invalid. 4155type UniformSharding struct { 4156 state protoimpl.MessageState 4157 sizeCache protoimpl.SizeCache 4158 unknownFields protoimpl.UnknownFields 4159 4160 // Required. Total number of shards. When any physical devices are selected, 4161 // the number must be >= 1 and <= 50. When no physical devices are selected, 4162 // the number must be >= 1 and <= 500. 4163 NumShards int32 `protobuf:"varint,1,opt,name=num_shards,json=numShards,proto3" json:"num_shards,omitempty"` 4164} 4165 4166func (x *UniformSharding) Reset() { 4167 *x = UniformSharding{} 4168 if protoimpl.UnsafeEnabled { 4169 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[42] 4170 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4171 ms.StoreMessageInfo(mi) 4172 } 4173} 4174 4175func (x *UniformSharding) String() string { 4176 return protoimpl.X.MessageStringOf(x) 4177} 4178 4179func (*UniformSharding) ProtoMessage() {} 4180 4181func (x *UniformSharding) ProtoReflect() protoreflect.Message { 4182 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[42] 4183 if protoimpl.UnsafeEnabled && x != nil { 4184 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4185 if ms.LoadMessageInfo() == nil { 4186 ms.StoreMessageInfo(mi) 4187 } 4188 return ms 4189 } 4190 return mi.MessageOf(x) 4191} 4192 4193// Deprecated: Use UniformSharding.ProtoReflect.Descriptor instead. 4194func (*UniformSharding) Descriptor() ([]byte, []int) { 4195 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{42} 4196} 4197 4198func (x *UniformSharding) GetNumShards() int32 { 4199 if x != nil { 4200 return x.NumShards 4201 } 4202 return 0 4203} 4204 4205// Shards test cases into the specified groups of packages, classes, and/or 4206// methods. 4207// 4208// With manual sharding enabled, specifying test targets via 4209// environment_variables or in InstrumentationTest is invalid. 4210type ManualSharding struct { 4211 state protoimpl.MessageState 4212 sizeCache protoimpl.SizeCache 4213 unknownFields protoimpl.UnknownFields 4214 4215 // Required. Group of packages, classes, and/or test methods to be run for 4216 // each shard. When any physical devices are selected, the number of 4217 // test_targets_for_shard must be >= 1 and <= 50. When no physical devices are 4218 // selected, the number must be >= 1 and <= 500. 4219 TestTargetsForShard []*TestTargetsForShard `protobuf:"bytes,1,rep,name=test_targets_for_shard,json=testTargetsForShard,proto3" json:"test_targets_for_shard,omitempty"` 4220} 4221 4222func (x *ManualSharding) Reset() { 4223 *x = ManualSharding{} 4224 if protoimpl.UnsafeEnabled { 4225 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[43] 4226 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4227 ms.StoreMessageInfo(mi) 4228 } 4229} 4230 4231func (x *ManualSharding) String() string { 4232 return protoimpl.X.MessageStringOf(x) 4233} 4234 4235func (*ManualSharding) ProtoMessage() {} 4236 4237func (x *ManualSharding) ProtoReflect() protoreflect.Message { 4238 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[43] 4239 if protoimpl.UnsafeEnabled && x != nil { 4240 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4241 if ms.LoadMessageInfo() == nil { 4242 ms.StoreMessageInfo(mi) 4243 } 4244 return ms 4245 } 4246 return mi.MessageOf(x) 4247} 4248 4249// Deprecated: Use ManualSharding.ProtoReflect.Descriptor instead. 4250func (*ManualSharding) Descriptor() ([]byte, []int) { 4251 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{43} 4252} 4253 4254func (x *ManualSharding) GetTestTargetsForShard() []*TestTargetsForShard { 4255 if x != nil { 4256 return x.TestTargetsForShard 4257 } 4258 return nil 4259} 4260 4261// Test targets for a shard. 4262type TestTargetsForShard struct { 4263 state protoimpl.MessageState 4264 sizeCache protoimpl.SizeCache 4265 unknownFields protoimpl.UnknownFields 4266 4267 // Group of packages, classes, and/or test methods to be run for each shard. 4268 // The targets need to be specified in AndroidJUnitRunner argument format. For 4269 // example, "package com.my.packages" "class com.my.package.MyClass". 4270 // 4271 // The number of shard_test_targets must be greater than 0. 4272 TestTargets []string `protobuf:"bytes,1,rep,name=test_targets,json=testTargets,proto3" json:"test_targets,omitempty"` 4273} 4274 4275func (x *TestTargetsForShard) Reset() { 4276 *x = TestTargetsForShard{} 4277 if protoimpl.UnsafeEnabled { 4278 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[44] 4279 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4280 ms.StoreMessageInfo(mi) 4281 } 4282} 4283 4284func (x *TestTargetsForShard) String() string { 4285 return protoimpl.X.MessageStringOf(x) 4286} 4287 4288func (*TestTargetsForShard) ProtoMessage() {} 4289 4290func (x *TestTargetsForShard) ProtoReflect() protoreflect.Message { 4291 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[44] 4292 if protoimpl.UnsafeEnabled && x != nil { 4293 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4294 if ms.LoadMessageInfo() == nil { 4295 ms.StoreMessageInfo(mi) 4296 } 4297 return ms 4298 } 4299 return mi.MessageOf(x) 4300} 4301 4302// Deprecated: Use TestTargetsForShard.ProtoReflect.Descriptor instead. 4303func (*TestTargetsForShard) Descriptor() ([]byte, []int) { 4304 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{44} 4305} 4306 4307func (x *TestTargetsForShard) GetTestTargets() []string { 4308 if x != nil { 4309 return x.TestTargets 4310 } 4311 return nil 4312} 4313 4314// Output only. Details about the shard. 4315type Shard struct { 4316 state protoimpl.MessageState 4317 sizeCache protoimpl.SizeCache 4318 unknownFields protoimpl.UnknownFields 4319 4320 // Output only. The index of the shard among all the shards. 4321 ShardIndex int32 `protobuf:"varint,1,opt,name=shard_index,json=shardIndex,proto3" json:"shard_index,omitempty"` 4322 // Output only. The total number of shards. 4323 NumShards int32 `protobuf:"varint,2,opt,name=num_shards,json=numShards,proto3" json:"num_shards,omitempty"` 4324 // Output only. Test targets for each shard. 4325 TestTargetsForShard *TestTargetsForShard `protobuf:"bytes,3,opt,name=test_targets_for_shard,json=testTargetsForShard,proto3" json:"test_targets_for_shard,omitempty"` 4326} 4327 4328func (x *Shard) Reset() { 4329 *x = Shard{} 4330 if protoimpl.UnsafeEnabled { 4331 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[45] 4332 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4333 ms.StoreMessageInfo(mi) 4334 } 4335} 4336 4337func (x *Shard) String() string { 4338 return protoimpl.X.MessageStringOf(x) 4339} 4340 4341func (*Shard) ProtoMessage() {} 4342 4343func (x *Shard) ProtoReflect() protoreflect.Message { 4344 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[45] 4345 if protoimpl.UnsafeEnabled && x != nil { 4346 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4347 if ms.LoadMessageInfo() == nil { 4348 ms.StoreMessageInfo(mi) 4349 } 4350 return ms 4351 } 4352 return mi.MessageOf(x) 4353} 4354 4355// Deprecated: Use Shard.ProtoReflect.Descriptor instead. 4356func (*Shard) Descriptor() ([]byte, []int) { 4357 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{45} 4358} 4359 4360func (x *Shard) GetShardIndex() int32 { 4361 if x != nil { 4362 return x.ShardIndex 4363 } 4364 return 0 4365} 4366 4367func (x *Shard) GetNumShards() int32 { 4368 if x != nil { 4369 return x.NumShards 4370 } 4371 return 0 4372} 4373 4374func (x *Shard) GetTestTargetsForShard() *TestTargetsForShard { 4375 if x != nil { 4376 return x.TestTargetsForShard 4377 } 4378 return nil 4379} 4380 4381// Request to submit a matrix of tests for execution. 4382type CreateTestMatrixRequest struct { 4383 state protoimpl.MessageState 4384 sizeCache protoimpl.SizeCache 4385 unknownFields protoimpl.UnknownFields 4386 4387 // The GCE project under which this job will run. 4388 ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` 4389 // The matrix of tests that the user wants to run. 4390 TestMatrix *TestMatrix `protobuf:"bytes,2,opt,name=test_matrix,json=testMatrix,proto3" json:"test_matrix,omitempty"` 4391 // A string id used to detect duplicated requests. 4392 // Ids are automatically scoped to a project, so 4393 // users should ensure the ID is unique per-project. 4394 // A UUID is recommended. 4395 // 4396 // Optional, but strongly recommended. 4397 RequestId string `protobuf:"bytes,3,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` 4398} 4399 4400func (x *CreateTestMatrixRequest) Reset() { 4401 *x = CreateTestMatrixRequest{} 4402 if protoimpl.UnsafeEnabled { 4403 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[46] 4404 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4405 ms.StoreMessageInfo(mi) 4406 } 4407} 4408 4409func (x *CreateTestMatrixRequest) String() string { 4410 return protoimpl.X.MessageStringOf(x) 4411} 4412 4413func (*CreateTestMatrixRequest) ProtoMessage() {} 4414 4415func (x *CreateTestMatrixRequest) ProtoReflect() protoreflect.Message { 4416 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[46] 4417 if protoimpl.UnsafeEnabled && x != nil { 4418 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4419 if ms.LoadMessageInfo() == nil { 4420 ms.StoreMessageInfo(mi) 4421 } 4422 return ms 4423 } 4424 return mi.MessageOf(x) 4425} 4426 4427// Deprecated: Use CreateTestMatrixRequest.ProtoReflect.Descriptor instead. 4428func (*CreateTestMatrixRequest) Descriptor() ([]byte, []int) { 4429 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{46} 4430} 4431 4432func (x *CreateTestMatrixRequest) GetProjectId() string { 4433 if x != nil { 4434 return x.ProjectId 4435 } 4436 return "" 4437} 4438 4439func (x *CreateTestMatrixRequest) GetTestMatrix() *TestMatrix { 4440 if x != nil { 4441 return x.TestMatrix 4442 } 4443 return nil 4444} 4445 4446func (x *CreateTestMatrixRequest) GetRequestId() string { 4447 if x != nil { 4448 return x.RequestId 4449 } 4450 return "" 4451} 4452 4453// Request to get the Test Matrix with the given id. 4454type GetTestMatrixRequest struct { 4455 state protoimpl.MessageState 4456 sizeCache protoimpl.SizeCache 4457 unknownFields protoimpl.UnknownFields 4458 4459 // Cloud project that owns the test matrix. 4460 ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` 4461 // Unique test matrix id which was assigned by the service. 4462 TestMatrixId string `protobuf:"bytes,2,opt,name=test_matrix_id,json=testMatrixId,proto3" json:"test_matrix_id,omitempty"` 4463} 4464 4465func (x *GetTestMatrixRequest) Reset() { 4466 *x = GetTestMatrixRequest{} 4467 if protoimpl.UnsafeEnabled { 4468 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[47] 4469 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4470 ms.StoreMessageInfo(mi) 4471 } 4472} 4473 4474func (x *GetTestMatrixRequest) String() string { 4475 return protoimpl.X.MessageStringOf(x) 4476} 4477 4478func (*GetTestMatrixRequest) ProtoMessage() {} 4479 4480func (x *GetTestMatrixRequest) ProtoReflect() protoreflect.Message { 4481 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[47] 4482 if protoimpl.UnsafeEnabled && x != nil { 4483 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4484 if ms.LoadMessageInfo() == nil { 4485 ms.StoreMessageInfo(mi) 4486 } 4487 return ms 4488 } 4489 return mi.MessageOf(x) 4490} 4491 4492// Deprecated: Use GetTestMatrixRequest.ProtoReflect.Descriptor instead. 4493func (*GetTestMatrixRequest) Descriptor() ([]byte, []int) { 4494 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{47} 4495} 4496 4497func (x *GetTestMatrixRequest) GetProjectId() string { 4498 if x != nil { 4499 return x.ProjectId 4500 } 4501 return "" 4502} 4503 4504func (x *GetTestMatrixRequest) GetTestMatrixId() string { 4505 if x != nil { 4506 return x.TestMatrixId 4507 } 4508 return "" 4509} 4510 4511// Request to stop running all of the tests in the specified matrix. 4512type CancelTestMatrixRequest struct { 4513 state protoimpl.MessageState 4514 sizeCache protoimpl.SizeCache 4515 unknownFields protoimpl.UnknownFields 4516 4517 // Cloud project that owns the test. 4518 ProjectId string `protobuf:"bytes,1,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` 4519 // Test matrix that will be canceled. 4520 TestMatrixId string `protobuf:"bytes,2,opt,name=test_matrix_id,json=testMatrixId,proto3" json:"test_matrix_id,omitempty"` 4521} 4522 4523func (x *CancelTestMatrixRequest) Reset() { 4524 *x = CancelTestMatrixRequest{} 4525 if protoimpl.UnsafeEnabled { 4526 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[48] 4527 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4528 ms.StoreMessageInfo(mi) 4529 } 4530} 4531 4532func (x *CancelTestMatrixRequest) String() string { 4533 return protoimpl.X.MessageStringOf(x) 4534} 4535 4536func (*CancelTestMatrixRequest) ProtoMessage() {} 4537 4538func (x *CancelTestMatrixRequest) ProtoReflect() protoreflect.Message { 4539 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[48] 4540 if protoimpl.UnsafeEnabled && x != nil { 4541 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4542 if ms.LoadMessageInfo() == nil { 4543 ms.StoreMessageInfo(mi) 4544 } 4545 return ms 4546 } 4547 return mi.MessageOf(x) 4548} 4549 4550// Deprecated: Use CancelTestMatrixRequest.ProtoReflect.Descriptor instead. 4551func (*CancelTestMatrixRequest) Descriptor() ([]byte, []int) { 4552 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{48} 4553} 4554 4555func (x *CancelTestMatrixRequest) GetProjectId() string { 4556 if x != nil { 4557 return x.ProjectId 4558 } 4559 return "" 4560} 4561 4562func (x *CancelTestMatrixRequest) GetTestMatrixId() string { 4563 if x != nil { 4564 return x.TestMatrixId 4565 } 4566 return "" 4567} 4568 4569// Response containing the current state of the specified test matrix. 4570type CancelTestMatrixResponse struct { 4571 state protoimpl.MessageState 4572 sizeCache protoimpl.SizeCache 4573 unknownFields protoimpl.UnknownFields 4574 4575 // The current rolled-up state of the test matrix. 4576 // If this state is already final, then the cancelation request will 4577 // have no effect. 4578 TestState TestState `protobuf:"varint,1,opt,name=test_state,json=testState,proto3,enum=google.devtools.testing.v1.TestState" json:"test_state,omitempty"` 4579} 4580 4581func (x *CancelTestMatrixResponse) Reset() { 4582 *x = CancelTestMatrixResponse{} 4583 if protoimpl.UnsafeEnabled { 4584 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[49] 4585 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4586 ms.StoreMessageInfo(mi) 4587 } 4588} 4589 4590func (x *CancelTestMatrixResponse) String() string { 4591 return protoimpl.X.MessageStringOf(x) 4592} 4593 4594func (*CancelTestMatrixResponse) ProtoMessage() {} 4595 4596func (x *CancelTestMatrixResponse) ProtoReflect() protoreflect.Message { 4597 mi := &file_google_devtools_testing_v1_test_execution_proto_msgTypes[49] 4598 if protoimpl.UnsafeEnabled && x != nil { 4599 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4600 if ms.LoadMessageInfo() == nil { 4601 ms.StoreMessageInfo(mi) 4602 } 4603 return ms 4604 } 4605 return mi.MessageOf(x) 4606} 4607 4608// Deprecated: Use CancelTestMatrixResponse.ProtoReflect.Descriptor instead. 4609func (*CancelTestMatrixResponse) Descriptor() ([]byte, []int) { 4610 return file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP(), []int{49} 4611} 4612 4613func (x *CancelTestMatrixResponse) GetTestState() TestState { 4614 if x != nil { 4615 return x.TestState 4616 } 4617 return TestState_TEST_STATE_UNSPECIFIED 4618} 4619 4620var File_google_devtools_testing_v1_test_execution_proto protoreflect.FileDescriptor 4621 4622var file_google_devtools_testing_v1_test_execution_proto_rawDesc = []byte{ 4623 0x0a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 4624 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 4625 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 4626 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 4627 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 4628 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 4629 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 4630 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 4631 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 4632 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 4633 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 4634 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 4635 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 4636 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 4637 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfd, 0x06, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x4d, 4638 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x61, 4639 0x74, 0x72, 0x69, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 4640 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 4641 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 4642 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x63, 0x6c, 4643 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 4644 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 4645 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 4646 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 4647 0x6e, 0x66, 0x6f, 0x12, 0x5c, 0x0a, 0x12, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 4648 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 4649 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 4650 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 4651 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 4652 0x74, 0x65, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 4653 0x6e, 0x12, 0x5c, 0x0a, 0x12, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 4654 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 4655 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 4656 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 4657 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x11, 0x65, 0x6e, 4658 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 4659 0x52, 0x0a, 0x0f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 4660 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4661 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 4662 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 4663 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 4664 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 4665 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 4666 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 4667 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 4668 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 4669 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08, 4670 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 4671 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 4672 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 4673 0x74, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 4674 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 4675 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 4676 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x66, 0x0a, 0x16, 4677 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5f, 0x64, 4678 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, 4679 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 4680 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 4681 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x14, 4682 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x44, 0x65, 0x74, 4683 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x5f, 0x74, 0x65, 4684 0x73, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 4685 0x05, 0x52, 0x11, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x54, 0x65, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 4686 0x6d, 0x70, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x5f, 4687 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 4688 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 4689 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x63, 0x6f, 4690 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x63, 0x6f, 4691 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x61, 0x69, 4692 0x6c, 0x5f, 0x66, 0x61, 0x73, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x61, 4693 0x69, 0x6c, 0x46, 0x61, 0x73, 0x74, 0x22, 0xd9, 0x04, 0x0a, 0x0d, 0x54, 0x65, 0x73, 0x74, 0x45, 4694 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 4695 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x72, 4696 0x69, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x74, 4697 0x72, 0x69, 0x78, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 4698 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 4699 0x63, 0x74, 0x49, 0x64, 0x12, 0x5c, 0x0a, 0x12, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65, 4700 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 4701 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 4702 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 4703 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 4704 0x11, 0x74, 0x65, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 4705 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 4706 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 4707 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 4708 0x68, 0x61, 0x72, 0x64, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x64, 0x12, 0x49, 0x0a, 0x0b, 0x65, 4709 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 4710 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 4711 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 4712 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 4713 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 4714 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 4715 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 4716 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 4717 0x61, 0x74, 0x65, 0x12, 0x57, 0x0a, 0x11, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 4718 0x6c, 0x74, 0x73, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 4719 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 4720 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 4721 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x53, 0x74, 0x65, 0x70, 0x52, 0x0f, 0x74, 0x6f, 0x6f, 4722 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x53, 0x74, 0x65, 0x70, 0x12, 0x38, 0x0a, 0x09, 4723 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 4724 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 4725 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 4726 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x64, 4727 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 4728 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 4729 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 4730 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 4731 0x6c, 0x73, 0x22, 0xbe, 0x06, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 4732 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74, 4733 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 4734 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 4735 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x54, 4736 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x46, 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 4737 0x65, 0x74, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 4738 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 4739 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x74, 0x75, 4740 0x70, 0x48, 0x00, 0x52, 0x09, 0x74, 0x65, 0x73, 0x74, 0x53, 0x65, 0x74, 0x75, 0x70, 0x12, 0x50, 4741 0x0a, 0x0e, 0x69, 0x6f, 0x73, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x75, 0x70, 4742 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4743 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 4744 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6f, 0x73, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x74, 0x75, 0x70, 4745 0x48, 0x00, 0x52, 0x0c, 0x69, 0x6f, 0x73, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x74, 0x75, 0x70, 4746 0x12, 0x7a, 0x0a, 0x1c, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x73, 0x74, 4747 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x65, 0x73, 0x74, 4748 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4749 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 4750 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x72, 4751 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x48, 0x01, 4752 0x52, 0x1a, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 4753 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x11, 4754 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x72, 0x6f, 0x62, 0x6f, 0x5f, 0x74, 0x65, 0x73, 4755 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4756 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 4757 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x52, 0x6f, 0x62, 0x6f, 4758 0x54, 0x65, 0x73, 0x74, 0x48, 0x01, 0x52, 0x0f, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x52, 4759 0x6f, 0x62, 0x6f, 0x54, 0x65, 0x73, 0x74, 0x12, 0x59, 0x0a, 0x11, 0x61, 0x6e, 0x64, 0x72, 0x6f, 4760 0x69, 0x64, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x09, 0x20, 0x01, 4761 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 4762 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 4763 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x48, 4764 0x01, 0x52, 0x0f, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x6f, 4765 0x6f, 0x70, 0x12, 0x47, 0x0a, 0x0b, 0x69, 0x6f, 0x73, 0x5f, 0x78, 0x63, 0x5f, 0x74, 0x65, 0x73, 4766 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4767 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 4768 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6f, 0x73, 0x58, 0x63, 0x54, 0x65, 0x73, 0x74, 0x48, 0x01, 4769 0x52, 0x09, 0x69, 0x6f, 0x73, 0x58, 0x63, 0x54, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0d, 0x69, 4770 0x6f, 0x73, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x18, 0x0f, 0x20, 0x01, 4771 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 4772 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 4773 0x49, 0x6f, 0x73, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x48, 0x01, 0x52, 0x0b, 0x69, 4774 0x6f, 0x73, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x69, 4775 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 4776 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x64, 0x69, 0x73, 4777 0x61, 0x62, 0x6c, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 4778 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x1b, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x65, 4779 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 4780 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 4781 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 4782 0x63, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x42, 0x06, 0x0a, 0x04, 0x74, 4783 0x65, 0x73, 0x74, 0x22, 0x3a, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x72, 0x61, 0x63, 0x65, 0x53, 4784 0x65, 0x74, 0x75, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 4785 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 4786 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 4787 0xa4, 0x04, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x74, 0x75, 0x70, 0x12, 0x4a, 0x0a, 4788 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x18, 0x01, 4789 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 4790 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 4791 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0b, 0x66, 0x69, 4792 0x6c, 0x65, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x73, 0x68, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x72, 4793 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x75, 0x6c, 0x6c, 4794 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 4795 0x69, 0x65, 0x73, 0x54, 0x6f, 0x50, 0x75, 0x6c, 0x6c, 0x12, 0x48, 0x0a, 0x0f, 0x61, 0x64, 0x64, 4796 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x70, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 4797 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 4798 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 4799 0x41, 0x70, 0x6b, 0x52, 0x0e, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 4800 0x70, 0x6b, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 4801 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 4802 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 4803 0x31, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 4804 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x72, 4805 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x74, 4806 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x65, 4807 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 4808 0x62, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 4809 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 4810 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 4811 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x14, 0x65, 0x6e, 0x76, 4812 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 4813 0x73, 0x12, 0x45, 0x0a, 0x08, 0x73, 0x79, 0x73, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x09, 0x20, 4814 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 4815 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 4816 0x2e, 0x53, 0x79, 0x73, 0x74, 0x72, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x75, 0x70, 0x52, 0x08, 4817 0x73, 0x79, 0x73, 0x74, 0x72, 0x61, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x1a, 0x64, 0x6f, 0x6e, 0x74, 4818 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 4819 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x64, 0x6f, 4820 0x6e, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 4821 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xab, 0x02, 0x0a, 0x0c, 0x49, 0x6f, 0x73, 0x54, 0x65, 4822 0x73, 0x74, 0x53, 0x65, 0x74, 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 4823 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 4824 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 4825 0x12, 0x52, 0x0a, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 4826 0x70, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4827 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 4828 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 4829 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 4830 0x49, 0x70, 0x61, 0x73, 0x12, 0x48, 0x0a, 0x0a, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x66, 0x69, 0x6c, 4831 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4832 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 4833 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 4834 0x69, 0x6c, 0x65, 0x52, 0x09, 0x70, 0x75, 0x73, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x54, 4835 0x0a, 0x10, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x69, 4836 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4837 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 4838 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 4839 0x69, 0x6c, 0x65, 0x52, 0x0f, 0x70, 0x75, 0x6c, 0x6c, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 4840 0x72, 0x69, 0x65, 0x73, 0x22, 0x3d, 0x0a, 0x13, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 4841 0x65, 0x6e, 0x74, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 4842 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 4843 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 4844 0x6c, 0x75, 0x65, 0x22, 0x64, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x49, 4845 0x0a, 0x0b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x18, 0x01, 0x20, 4846 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 4847 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 4848 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x48, 0x00, 0x52, 0x0a, 0x67, 4849 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x42, 0x0e, 0x0a, 0x0c, 0x61, 0x63, 0x63, 4850 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x6f, 4851 0x67, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x22, 0x6f, 0x0a, 0x03, 0x41, 0x70, 0x6b, 0x12, 0x45, 4852 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 4853 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 4854 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 4855 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x6c, 0x6f, 0x63, 4856 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 4857 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 4858 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x6b, 0x0a, 0x09, 0x41, 0x70, 0x70, 0x42, 4859 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x54, 0x0a, 0x0f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 4860 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 4861 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 4862 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 4863 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x75, 0x6e, 4864 0x64, 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x62, 4865 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 4866 0x46, 0x69, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x08, 0x6f, 0x62, 0x62, 0x5f, 0x66, 0x69, 0x6c, 0x65, 4867 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4868 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 4869 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x62, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x07, 0x6f, 4870 0x62, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 4871 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 4872 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 4873 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 4874 0x72, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 4875 0x46, 0x69, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x66, 4876 0x69, 0x6c, 0x65, 0x22, 0x6a, 0x0a, 0x07, 0x4f, 0x62, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 4877 0x0a, 0x0d, 0x6f, 0x62, 0x62, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 4878 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x62, 0x62, 0x46, 0x69, 0x6c, 0x65, 0x4e, 0x61, 4879 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x03, 0x6f, 0x62, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 4880 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 4881 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 4882 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6f, 0x62, 0x62, 0x22, 4883 0x73, 0x0a, 0x0b, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x43, 4884 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 4885 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 4886 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 4887 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 4888 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x61, 4889 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 4890 0x50, 0x61, 0x74, 0x68, 0x22, 0x92, 0x01, 0x0a, 0x0d, 0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 4891 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 4892 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4893 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 4894 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 4895 0x63, 0x65, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 4896 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 4897 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x76, 0x69, 4898 0x63, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 4899 0x65, 0x76, 0x69, 0x63, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x9e, 0x02, 0x0a, 0x0f, 0x41, 0x6e, 4900 0x64, 0x72, 0x6f, 0x69, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x44, 0x0a, 4901 0x07, 0x61, 0x70, 0x70, 0x5f, 0x61, 0x70, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 4902 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 4903 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 4904 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x06, 0x61, 0x70, 0x70, 4905 0x41, 0x70, 0x6b, 0x12, 0x46, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 4906 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4907 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 4908 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x48, 0x00, 4909 0x52, 0x09, 0x61, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x61, 4910 0x70, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 4911 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 4912 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x18, 0x03, 4913 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x12, 4914 0x27, 0x0a, 0x0f, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x5f, 0x6c, 0x61, 0x62, 0x65, 4915 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 4916 0x69, 0x6f, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x5f, 4917 0x75, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa1, 0x02, 0x0a, 0x09, 0x49, 4918 0x6f, 0x73, 0x58, 0x63, 0x54, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x09, 0x74, 0x65, 0x73, 0x74, 4919 0x73, 0x5f, 0x7a, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 4920 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 4921 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 4922 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x74, 0x65, 0x73, 0x74, 0x73, 0x5a, 0x69, 0x70, 4923 0x12, 0x47, 0x0a, 0x09, 0x78, 0x63, 0x74, 0x65, 0x73, 0x74, 0x72, 0x75, 0x6e, 0x18, 0x02, 0x20, 4924 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 4925 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 4926 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 4927 0x78, 0x63, 0x74, 0x65, 0x73, 0x74, 0x72, 0x75, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x78, 0x63, 0x6f, 4928 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 4929 0x52, 0x0c, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 4930 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 4931 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 4932 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 4933 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 4934 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x74, 0x65, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x69, 4935 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x93, 4936 0x01, 0x0a, 0x0b, 0x49, 0x6f, 0x73, 0x54, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x42, 4937 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x70, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 4938 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 4939 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6c, 4940 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x06, 0x61, 0x70, 0x70, 0x49, 4941 0x70, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 0x18, 4942 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x73, 4943 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 4944 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 4945 0x6c, 0x65, 0x49, 0x64, 0x22, 0xd5, 0x04, 0x0a, 0x1a, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 4946 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 4947 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x61, 0x70, 0x6b, 0x18, 0x01, 4948 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 4949 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 4950 0x31, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 4951 0x00, 0x52, 0x06, 0x61, 0x70, 0x70, 0x41, 0x70, 0x6b, 0x12, 0x46, 0x0a, 0x0a, 0x61, 0x70, 0x70, 4952 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 4953 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 4954 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x42, 0x75, 4955 0x6e, 0x64, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x09, 0x61, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 4956 0x65, 0x12, 0x44, 0x0a, 0x08, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x6b, 0x18, 0x02, 0x20, 4957 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 4958 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 4959 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 4960 0x74, 0x65, 0x73, 0x74, 0x41, 0x70, 0x6b, 0x12, 0x24, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x5f, 0x70, 4961 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 4962 0x0c, 0x61, 0x70, 0x70, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 4963 0x0f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 4964 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 4965 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x75, 4966 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 4967 0x52, 0x0f, 0x74, 0x65, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 4968 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 4969 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x54, 0x61, 0x72, 4970 0x67, 0x65, 0x74, 0x73, 0x12, 0x5f, 0x0a, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 4971 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 4972 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 4973 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 4974 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 4975 0x6e, 0x52, 0x12, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4f, 4976 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x53, 0x0a, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 4977 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 4978 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 4979 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 4980 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 4981 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x61, 0x70, 4982 0x70, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x22, 0xc6, 0x04, 0x0a, 4983 0x0f, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x52, 0x6f, 0x62, 0x6f, 0x54, 0x65, 0x73, 0x74, 4984 0x12, 0x44, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x5f, 0x61, 0x70, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 4985 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 4986 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 4987 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x06, 4988 0x61, 0x70, 0x70, 0x41, 0x70, 0x6b, 0x12, 0x46, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x5f, 0x62, 0x75, 4989 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 4990 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 4991 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 4992 0x65, 0x48, 0x00, 0x52, 0x09, 0x61, 0x70, 0x70, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x24, 4993 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 4994 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x50, 0x61, 0x63, 0x6b, 0x61, 4995 0x67, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x6e, 0x69, 0x74, 4996 0x69, 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 4997 0x28, 0x09, 0x52, 0x12, 0x61, 0x70, 0x70, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x41, 0x63, 4998 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 4999 0x70, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x6d, 5000 0x61, 0x78, 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x73, 5001 0x74, 0x65, 0x70, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 5002 0x6d, 0x61, 0x78, 0x53, 0x74, 0x65, 0x70, 0x73, 0x12, 0x52, 0x0a, 0x0f, 0x72, 0x6f, 0x62, 0x6f, 5003 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 5004 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 5005 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 5006 0x6f, 0x62, 0x6f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x0e, 0x72, 0x6f, 5007 0x62, 0x6f, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0b, 5008 0x72, 0x6f, 0x62, 0x6f, 0x5f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 5009 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 5010 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x46, 5011 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x72, 0x6f, 5012 0x62, 0x6f, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x59, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 5013 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0f, 0x20, 0x03, 5014 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 5015 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 5016 0x52, 0x6f, 0x62, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 5017 0x6e, 0x74, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 5018 0x6e, 0x74, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 5019 0x5f, 0x74, 0x65, 0x73, 0x74, 0x22, 0xa0, 0x01, 0x0a, 0x0d, 0x52, 0x6f, 0x62, 0x6f, 0x44, 0x69, 5020 0x72, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 5021 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 5022 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 5023 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 5024 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x65, 0x78, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x61, 5025 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 5026 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 5027 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 5028 0x62, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, 0x63, 5029 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x99, 0x02, 0x0a, 0x12, 0x52, 0x6f, 0x62, 5030 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 5031 0x61, 0x0a, 0x11, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 5032 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 5033 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 5034 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x72, 5035 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 5036 0x52, 0x10, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 5037 0x74, 0x79, 0x12, 0x58, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 5038 0x76, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 5039 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 5040 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 5041 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x73, 5042 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x07, 5043 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 5044 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 5045 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 5046 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 5047 0x74, 0x65, 0x6e, 0x74, 0x22, 0x18, 0x0a, 0x16, 0x4c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x65, 0x72, 5048 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x5f, 5049 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x49, 5050 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 5051 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 5052 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 5053 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 5054 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 5055 0xb3, 0x02, 0x0a, 0x11, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 5056 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x52, 0x0a, 0x0e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 5057 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 5058 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 5059 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 5060 0x69, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x6e, 0x64, 0x72, 5061 0x6f, 0x69, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x5f, 0x0a, 0x13, 0x61, 0x6e, 0x64, 5062 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 5063 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 5064 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 5065 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 5066 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x11, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 5067 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x69, 0x6f, 5068 0x73, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 5069 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 5070 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 5071 0x2e, 0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 5072 0x52, 0x0d, 0x69, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 5073 0x14, 0x0a, 0x12, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 5074 0x61, 0x74, 0x72, 0x69, 0x78, 0x22, 0x67, 0x0a, 0x11, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 5075 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x0f, 0x61, 0x6e, 5076 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 5077 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 5078 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 5079 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0e, 5080 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0x57, 5081 0x0a, 0x0d, 0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 5082 0x46, 0x0a, 0x0b, 0x69, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 5083 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 5084 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 5085 0x31, 0x2e, 0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x69, 0x6f, 0x73, 5086 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x0d, 0x41, 0x6e, 0x64, 0x72, 5087 0x6f, 0x69, 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6e, 0x64, 5088 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 5089 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4d, 0x6f, 0x64, 5090 0x65, 0x6c, 0x49, 0x64, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 5091 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 5092 0x28, 0x09, 0x52, 0x11, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 5093 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x73, 5094 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x12, 5095 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 5096 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 5097 0x6f, 0x6e, 0x73, 0x22, 0x7e, 0x0a, 0x0a, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 5098 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 5099 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x13, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 5100 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 5101 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 5102 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 5103 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 5104 0x52, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x74, 0x61, 5105 0x69, 0x6c, 0x73, 0x22, 0x3a, 0x0a, 0x10, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 5106 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 5107 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 5108 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 5109 0xdc, 0x02, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 5110 0x65, 0x12, 0x60, 0x0a, 0x14, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 5111 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 5112 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 5113 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x6f, 5114 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 5115 0x12, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 5116 0x61, 0x67, 0x65, 0x12, 0x60, 0x0a, 0x14, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 5117 0x6c, 0x74, 0x73, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 5118 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 5119 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 5120 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 5121 0x79, 0x52, 0x12, 0x74, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x69, 5122 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x66, 0x0a, 0x16, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x72, 0x65, 5123 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 5124 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 5125 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 5126 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x45, 0x78, 5127 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x74, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 5128 0x75, 0x6c, 0x74, 0x73, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 5129 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x07, 0x20, 0x01, 5130 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x55, 0x72, 0x6c, 0x22, 0x52, 5131 0x0a, 0x12, 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x69, 0x73, 5132 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 5133 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 5134 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 5135 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 5136 0x49, 0x64, 0x22, 0x77, 0x0a, 0x14, 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 5137 0x73, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 5138 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 5139 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x69, 0x73, 5140 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 5141 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x65, 0x63, 5142 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 5143 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x8b, 0x01, 0x0a, 0x0f, 5144 0x54, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x53, 0x74, 0x65, 0x70, 0x12, 5145 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 5146 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 5147 0x0a, 0x0a, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 5148 0x28, 0x09, 0x52, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 5149 0x0c, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 5150 0x01, 0x28, 0x09, 0x52, 0x0b, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 5151 0x12, 0x17, 0x0a, 0x07, 0x73, 0x74, 0x65, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 5152 0x09, 0x52, 0x06, 0x73, 0x74, 0x65, 0x70, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x12, 0x47, 0x6f, 0x6f, 5153 0x67, 0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 5154 0x19, 0x0a, 0x08, 0x67, 0x63, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 5155 0x09, 0x52, 0x07, 0x67, 0x63, 0x73, 0x50, 0x61, 0x74, 0x68, 0x22, 0x34, 0x0a, 0x0d, 0x46, 0x69, 5156 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x67, 5157 0x63, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 5158 0x07, 0x67, 0x63, 0x73, 0x50, 0x61, 0x74, 0x68, 0x42, 0x06, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 5159 0x22, 0xb8, 0x01, 0x0a, 0x0b, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 5160 0x12, 0x52, 0x0a, 0x0e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 5161 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 5162 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 5163 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x44, 0x65, 0x76, 5164 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x44, 0x65, 5165 0x76, 0x69, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0a, 0x69, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x76, 0x69, 5166 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 5167 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 5168 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x48, 5169 0x00, 0x52, 0x09, 0x69, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 5170 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xa1, 0x01, 0x0a, 0x0d, 5171 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 5172 0x10, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 5173 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 5174 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6e, 0x64, 0x72, 0x6f, 5175 0x69, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 5176 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x56, 0x65, 0x72, 0x73, 5177 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 5178 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x20, 0x0a, 5179 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 5180 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 5181 0x8d, 0x01, 0x0a, 0x09, 0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, 0x0a, 5182 0x0c, 0x69, 0x6f, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 5183 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6f, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x49, 0x64, 0x12, 5184 0x24, 0x0a, 0x0e, 0x69, 0x6f, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 5185 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 5186 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 5187 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x20, 0x0a, 5188 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 5189 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 5190 0x5f, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2b, 5191 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 5192 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x6f, 0x67, 0x72, 5193 0x65, 0x73, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 5194 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 5195 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 5196 0x22, 0xf3, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 5197 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x4f, 0x0a, 0x06, 0x72, 0x65, 0x61, 5198 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 5199 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 5200 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 5201 0x71, 0x75, 0x65, 0x73, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x52, 0x65, 0x61, 0x73, 5202 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0x0a, 0x06, 0x52, 5203 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 5204 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 5205 0x0f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 5206 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 5207 0x4f, 0x4f, 0x5f, 0x42, 0x49, 0x47, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 5208 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x03, 5209 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 5210 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 5211 0x4e, 0x54, 0x45, 0x44, 0x10, 0x05, 0x22, 0xcb, 0x01, 0x0a, 0x0e, 0x53, 0x68, 0x61, 0x72, 0x64, 5212 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x10, 0x75, 0x6e, 0x69, 5213 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 5214 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 5215 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 5216 0x2e, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 5217 0x48, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x68, 0x61, 0x72, 0x64, 5218 0x69, 0x6e, 0x67, 0x12, 0x55, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x68, 5219 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 5220 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 5221 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 5222 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x75, 5223 0x61, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x70, 5224 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x30, 0x0a, 0x0f, 0x55, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x53, 5225 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 5226 0x68, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e, 0x75, 0x6d, 5227 0x53, 0x68, 0x61, 0x72, 0x64, 0x73, 0x22, 0x76, 0x0a, 0x0e, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 5228 0x53, 0x68, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x64, 0x0a, 0x16, 0x74, 0x65, 0x73, 0x74, 5229 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x73, 0x68, 0x61, 5230 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 5231 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 5232 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 5233 0x73, 0x46, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x52, 0x13, 0x74, 0x65, 0x73, 0x74, 0x54, 5234 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x22, 0x38, 5235 0x0a, 0x13, 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x46, 0x6f, 0x72, 5236 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x61, 5237 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x73, 5238 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x22, 0xad, 0x01, 0x0a, 0x05, 0x53, 0x68, 0x61, 5239 0x72, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 5240 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x64, 0x49, 0x6e, 5241 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 5242 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x53, 0x68, 0x61, 0x72, 5243 0x64, 0x73, 0x12, 0x64, 0x0a, 0x16, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 5244 0x74, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 5245 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 5246 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 5247 0x54, 0x65, 0x73, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x53, 0x68, 5248 0x61, 0x72, 0x64, 0x52, 0x13, 0x74, 0x65, 0x73, 0x74, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 5249 0x46, 0x6f, 0x72, 0x53, 0x68, 0x61, 0x72, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 5250 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x65, 0x71, 5251 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 5252 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 5253 0x74, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x72, 5254 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 5255 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 5256 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 5257 0x52, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 5258 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 5259 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x22, 0x5b, 0x0a, 0x14, 0x47, 5260 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, 5261 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 5262 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 5263 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 5264 0x78, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 5265 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x17, 0x43, 0x61, 0x6e, 0x63, 5266 0x65, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, 5267 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 5268 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 5269 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 5270 0x78, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 5271 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x49, 0x64, 0x22, 0x60, 0x0a, 0x18, 0x43, 0x61, 0x6e, 0x63, 5272 0x65, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x65, 0x73, 0x70, 5273 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 5274 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 5275 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 5276 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 5277 0x09, 0x74, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2a, 0x6c, 0x0a, 0x12, 0x4f, 0x72, 5278 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 5279 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 5280 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 5281 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x52, 0x43, 5282 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 5283 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x4f, 0x52, 0x43, 0x48, 0x45, 0x53, 5284 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0x5b, 0x0a, 0x0e, 0x52, 0x6f, 0x62, 0x6f, 5285 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 5286 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 5287 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x49, 0x4e, 0x47, 0x4c, 5288 0x45, 0x5f, 0x43, 0x4c, 0x49, 0x43, 0x4b, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x45, 0x4e, 0x54, 5289 0x45, 0x52, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x47, 0x4e, 5290 0x4f, 0x52, 0x45, 0x10, 0x03, 0x2a, 0xbc, 0x07, 0x0a, 0x14, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 5291 0x64, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x26, 5292 0x0a, 0x22, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4d, 0x41, 0x54, 0x52, 0x49, 0x58, 5293 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 5294 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 5295 0x53, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 5296 0x11, 0x0a, 0x0d, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x41, 0x50, 0x4b, 5297 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x5f, 5298 0x54, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x50, 0x4b, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 5299 0x5f, 0x4d, 0x41, 0x4e, 0x49, 0x46, 0x45, 0x53, 0x54, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 5300 0x4f, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x41, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x05, 5301 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 5302 0x41, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x1f, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x45, 5303 0x53, 0x54, 0x5f, 0x53, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x06, 5304 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x4f, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x4d, 0x45, 0x4e, 5305 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x4e, 0x4f, 0x5f, 0x53, 5306 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x14, 0x12, 0x2d, 0x0a, 0x29, 0x49, 0x4e, 5307 0x53, 0x54, 0x52, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x52, 5308 0x43, 0x48, 0x45, 0x53, 0x54, 0x52, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 5309 0x50, 0x41, 0x54, 0x49, 0x42, 0x4c, 0x45, 0x10, 0x12, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x4f, 0x5f, 5310 0x54, 0x45, 0x53, 0x54, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x43, 0x4c, 0x41, 0x53, 5311 0x53, 0x10, 0x13, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x4f, 0x5f, 0x4c, 0x41, 0x55, 0x4e, 0x43, 0x48, 5312 0x45, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x10, 0x08, 0x12, 0x19, 0x0a, 5313 0x15, 0x46, 0x4f, 0x52, 0x42, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 5314 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e, 0x56, 0x41, 5315 0x4c, 0x49, 0x44, 0x5f, 0x52, 0x4f, 0x42, 0x4f, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 5316 0x56, 0x45, 0x53, 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 5317 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x21, 5318 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x44, 0x49, 0x52, 0x45, 5319 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x22, 0x12, 0x25, 5320 0x0a, 0x21, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x54, 0x45, 5321 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 5322 0x55, 0x4e, 0x44, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x43, 0x45, 0x4e, 0x41, 0x52, 0x49, 5323 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x45, 0x43, 0x4c, 5324 0x41, 0x52, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x45, 0x4e, 0x41, 0x52, 5325 0x49, 0x4f, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 5326 0x45, 0x44, 0x10, 0x0e, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x43, 0x45, 0x4e, 0x41, 0x52, 0x49, 0x4f, 5327 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x44, 0x45, 0x43, 0x4c, 0x41, 0x52, 0x45, 0x44, 0x10, 0x0f, 0x12, 5328 0x19, 0x0a, 0x15, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 5329 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x52, 0x10, 0x11, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 5330 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x58, 0x43, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 5331 0x5a, 0x49, 0x50, 0x10, 0x0b, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x55, 0x49, 0x4c, 0x54, 0x5f, 0x46, 5332 0x4f, 0x52, 0x5f, 0x49, 0x4f, 0x53, 0x5f, 0x53, 0x49, 0x4d, 0x55, 0x4c, 0x41, 0x54, 0x4f, 0x52, 5333 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x4f, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x53, 0x5f, 0x49, 5334 0x4e, 0x5f, 0x58, 0x43, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x5a, 0x49, 0x50, 0x10, 0x19, 0x12, 5335 0x1d, 0x0a, 0x19, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x41, 0x54, 0x49, 5336 0x4f, 0x4e, 0x5f, 0x41, 0x52, 0x54, 0x49, 0x46, 0x41, 0x43, 0x54, 0x53, 0x10, 0x1a, 0x12, 0x17, 5337 0x0a, 0x13, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x48, 5338 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x1c, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4c, 0x49, 0x53, 0x54, 5339 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x53, 0x45, 5340 0x44, 0x10, 0x1e, 0x12, 0x15, 0x0a, 0x0d, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 5341 0x5f, 0x41, 0x50, 0x4b, 0x10, 0x15, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x41, 5342 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x49, 0x50, 0x41, 0x10, 0x16, 0x12, 0x16, 0x0a, 5343 0x12, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x52, 0x4c, 0x5f, 0x53, 0x43, 0x48, 5344 0x45, 0x4d, 0x45, 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 5345 0x45, 0x44, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x42, 0x55, 0x4e, 0x44, 0x4c, 0x45, 0x10, 0x24, 0x12, 5346 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x50, 0x4b, 0x10, 0x17, 5347 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x49, 0x4e, 0x50, 0x55, 5348 0x54, 0x5f, 0x41, 0x50, 0x4b, 0x10, 0x1b, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e, 0x56, 0x41, 0x4c, 5349 0x49, 0x44, 0x5f, 0x41, 0x50, 0x4b, 0x5f, 0x50, 0x52, 0x45, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x53, 5350 0x44, 0x4b, 0x10, 0x1d, 0x2a, 0xe0, 0x01, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 5351 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 5352 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 5353 0x0a, 0x0a, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x0b, 5354 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 5355 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x4e, 0x49, 5356 0x53, 0x48, 0x45, 0x44, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 5357 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 5358 0x5f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x05, 0x12, 0x1c, 5359 0x0a, 0x18, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, 0x42, 0x4c, 0x45, 0x5f, 0x45, 5360 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 5361 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x54, 0x49, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x52, 0x43, 5362 0x48, 0x49, 0x54, 0x45, 0x43, 0x54, 0x55, 0x52, 0x45, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x43, 5363 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 5364 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x07, 0x2a, 0x6a, 0x0a, 0x0e, 0x4f, 0x75, 0x74, 0x63, 0x6f, 5365 0x6d, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x55, 0x54, 5366 0x43, 0x4f, 0x4d, 0x45, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 5367 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 5368 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x49, 0x4c, 0x55, 5369 0x52, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x43, 0x4f, 0x4e, 0x43, 0x4c, 0x55, 5370 0x53, 0x49, 0x56, 0x45, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 5371 0x44, 0x10, 0x04, 0x32, 0xc0, 0x05, 0x0a, 0x14, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x65, 0x63, 5372 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xac, 0x01, 0x0a, 5373 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 5374 0x78, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 5375 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 5376 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 5377 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 5378 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 5379 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x22, 0x3b, 5380 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 5381 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 5382 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x63, 0x65, 0x73, 0x3a, 0x0b, 5383 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0xaa, 0x01, 0x0a, 0x0d, 5384 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x30, 0x2e, 5385 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 5386 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 5387 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 5388 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 5389 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 5390 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 5391 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 5392 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x4d, 5393 0x61, 0x74, 0x72, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x61, 5394 0x74, 0x72, 0x69, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xc5, 0x01, 0x0a, 0x10, 0x43, 0x61, 0x6e, 5395 0x63, 0x65, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x12, 0x33, 0x2e, 5396 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 5397 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 5398 0x6c, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 5399 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 5400 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 5401 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 5402 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 5403 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 5404 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, 5405 0x4d, 0x61, 0x74, 0x72, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 5406 0x61, 0x74, 0x72, 0x69, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 5407 0x1a, 0x83, 0x01, 0xca, 0x41, 0x16, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6f, 5408 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x67, 0x68, 5409 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 5410 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 5411 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 5412 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 5413 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 5414 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x72, 0x65, 0x61, 5415 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x79, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 5416 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 5417 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x12, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 5418 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 5419 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 5420 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 5421 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x74, 5422 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 5423 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 5424} 5425 5426var ( 5427 file_google_devtools_testing_v1_test_execution_proto_rawDescOnce sync.Once 5428 file_google_devtools_testing_v1_test_execution_proto_rawDescData = file_google_devtools_testing_v1_test_execution_proto_rawDesc 5429) 5430 5431func file_google_devtools_testing_v1_test_execution_proto_rawDescGZIP() []byte { 5432 file_google_devtools_testing_v1_test_execution_proto_rawDescOnce.Do(func() { 5433 file_google_devtools_testing_v1_test_execution_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_devtools_testing_v1_test_execution_proto_rawDescData) 5434 }) 5435 return file_google_devtools_testing_v1_test_execution_proto_rawDescData 5436} 5437 5438var file_google_devtools_testing_v1_test_execution_proto_enumTypes = make([]protoimpl.EnumInfo, 6) 5439var file_google_devtools_testing_v1_test_execution_proto_msgTypes = make([]protoimpl.MessageInfo, 50) 5440var file_google_devtools_testing_v1_test_execution_proto_goTypes = []interface{}{ 5441 (OrchestratorOption)(0), // 0: google.devtools.testing.v1.OrchestratorOption 5442 (RoboActionType)(0), // 1: google.devtools.testing.v1.RoboActionType 5443 (InvalidMatrixDetails)(0), // 2: google.devtools.testing.v1.InvalidMatrixDetails 5444 (TestState)(0), // 3: google.devtools.testing.v1.TestState 5445 (OutcomeSummary)(0), // 4: google.devtools.testing.v1.OutcomeSummary 5446 (InvalidRequestDetail_Reason)(0), // 5: google.devtools.testing.v1.InvalidRequestDetail.Reason 5447 (*TestMatrix)(nil), // 6: google.devtools.testing.v1.TestMatrix 5448 (*TestExecution)(nil), // 7: google.devtools.testing.v1.TestExecution 5449 (*TestSpecification)(nil), // 8: google.devtools.testing.v1.TestSpecification 5450 (*SystraceSetup)(nil), // 9: google.devtools.testing.v1.SystraceSetup 5451 (*TestSetup)(nil), // 10: google.devtools.testing.v1.TestSetup 5452 (*IosTestSetup)(nil), // 11: google.devtools.testing.v1.IosTestSetup 5453 (*EnvironmentVariable)(nil), // 12: google.devtools.testing.v1.EnvironmentVariable 5454 (*Account)(nil), // 13: google.devtools.testing.v1.Account 5455 (*GoogleAuto)(nil), // 14: google.devtools.testing.v1.GoogleAuto 5456 (*Apk)(nil), // 15: google.devtools.testing.v1.Apk 5457 (*AppBundle)(nil), // 16: google.devtools.testing.v1.AppBundle 5458 (*DeviceFile)(nil), // 17: google.devtools.testing.v1.DeviceFile 5459 (*ObbFile)(nil), // 18: google.devtools.testing.v1.ObbFile 5460 (*RegularFile)(nil), // 19: google.devtools.testing.v1.RegularFile 5461 (*IosDeviceFile)(nil), // 20: google.devtools.testing.v1.IosDeviceFile 5462 (*AndroidTestLoop)(nil), // 21: google.devtools.testing.v1.AndroidTestLoop 5463 (*IosXcTest)(nil), // 22: google.devtools.testing.v1.IosXcTest 5464 (*IosTestLoop)(nil), // 23: google.devtools.testing.v1.IosTestLoop 5465 (*AndroidInstrumentationTest)(nil), // 24: google.devtools.testing.v1.AndroidInstrumentationTest 5466 (*AndroidRoboTest)(nil), // 25: google.devtools.testing.v1.AndroidRoboTest 5467 (*RoboDirective)(nil), // 26: google.devtools.testing.v1.RoboDirective 5468 (*RoboStartingIntent)(nil), // 27: google.devtools.testing.v1.RoboStartingIntent 5469 (*LauncherActivityIntent)(nil), // 28: google.devtools.testing.v1.LauncherActivityIntent 5470 (*StartActivityIntent)(nil), // 29: google.devtools.testing.v1.StartActivityIntent 5471 (*EnvironmentMatrix)(nil), // 30: google.devtools.testing.v1.EnvironmentMatrix 5472 (*AndroidDeviceList)(nil), // 31: google.devtools.testing.v1.AndroidDeviceList 5473 (*IosDeviceList)(nil), // 32: google.devtools.testing.v1.IosDeviceList 5474 (*AndroidMatrix)(nil), // 33: google.devtools.testing.v1.AndroidMatrix 5475 (*ClientInfo)(nil), // 34: google.devtools.testing.v1.ClientInfo 5476 (*ClientInfoDetail)(nil), // 35: google.devtools.testing.v1.ClientInfoDetail 5477 (*ResultStorage)(nil), // 36: google.devtools.testing.v1.ResultStorage 5478 (*ToolResultsHistory)(nil), // 37: google.devtools.testing.v1.ToolResultsHistory 5479 (*ToolResultsExecution)(nil), // 38: google.devtools.testing.v1.ToolResultsExecution 5480 (*ToolResultsStep)(nil), // 39: google.devtools.testing.v1.ToolResultsStep 5481 (*GoogleCloudStorage)(nil), // 40: google.devtools.testing.v1.GoogleCloudStorage 5482 (*FileReference)(nil), // 41: google.devtools.testing.v1.FileReference 5483 (*Environment)(nil), // 42: google.devtools.testing.v1.Environment 5484 (*AndroidDevice)(nil), // 43: google.devtools.testing.v1.AndroidDevice 5485 (*IosDevice)(nil), // 44: google.devtools.testing.v1.IosDevice 5486 (*TestDetails)(nil), // 45: google.devtools.testing.v1.TestDetails 5487 (*InvalidRequestDetail)(nil), // 46: google.devtools.testing.v1.InvalidRequestDetail 5488 (*ShardingOption)(nil), // 47: google.devtools.testing.v1.ShardingOption 5489 (*UniformSharding)(nil), // 48: google.devtools.testing.v1.UniformSharding 5490 (*ManualSharding)(nil), // 49: google.devtools.testing.v1.ManualSharding 5491 (*TestTargetsForShard)(nil), // 50: google.devtools.testing.v1.TestTargetsForShard 5492 (*Shard)(nil), // 51: google.devtools.testing.v1.Shard 5493 (*CreateTestMatrixRequest)(nil), // 52: google.devtools.testing.v1.CreateTestMatrixRequest 5494 (*GetTestMatrixRequest)(nil), // 53: google.devtools.testing.v1.GetTestMatrixRequest 5495 (*CancelTestMatrixRequest)(nil), // 54: google.devtools.testing.v1.CancelTestMatrixRequest 5496 (*CancelTestMatrixResponse)(nil), // 55: google.devtools.testing.v1.CancelTestMatrixResponse 5497 (*timestamppb.Timestamp)(nil), // 56: google.protobuf.Timestamp 5498 (*durationpb.Duration)(nil), // 57: google.protobuf.Duration 5499} 5500var file_google_devtools_testing_v1_test_execution_proto_depIdxs = []int32{ 5501 34, // 0: google.devtools.testing.v1.TestMatrix.client_info:type_name -> google.devtools.testing.v1.ClientInfo 5502 8, // 1: google.devtools.testing.v1.TestMatrix.test_specification:type_name -> google.devtools.testing.v1.TestSpecification 5503 30, // 2: google.devtools.testing.v1.TestMatrix.environment_matrix:type_name -> google.devtools.testing.v1.EnvironmentMatrix 5504 7, // 3: google.devtools.testing.v1.TestMatrix.test_executions:type_name -> google.devtools.testing.v1.TestExecution 5505 36, // 4: google.devtools.testing.v1.TestMatrix.result_storage:type_name -> google.devtools.testing.v1.ResultStorage 5506 3, // 5: google.devtools.testing.v1.TestMatrix.state:type_name -> google.devtools.testing.v1.TestState 5507 56, // 6: google.devtools.testing.v1.TestMatrix.timestamp:type_name -> google.protobuf.Timestamp 5508 2, // 7: google.devtools.testing.v1.TestMatrix.invalid_matrix_details:type_name -> google.devtools.testing.v1.InvalidMatrixDetails 5509 4, // 8: google.devtools.testing.v1.TestMatrix.outcome_summary:type_name -> google.devtools.testing.v1.OutcomeSummary 5510 8, // 9: google.devtools.testing.v1.TestExecution.test_specification:type_name -> google.devtools.testing.v1.TestSpecification 5511 51, // 10: google.devtools.testing.v1.TestExecution.shard:type_name -> google.devtools.testing.v1.Shard 5512 42, // 11: google.devtools.testing.v1.TestExecution.environment:type_name -> google.devtools.testing.v1.Environment 5513 3, // 12: google.devtools.testing.v1.TestExecution.state:type_name -> google.devtools.testing.v1.TestState 5514 39, // 13: google.devtools.testing.v1.TestExecution.tool_results_step:type_name -> google.devtools.testing.v1.ToolResultsStep 5515 56, // 14: google.devtools.testing.v1.TestExecution.timestamp:type_name -> google.protobuf.Timestamp 5516 45, // 15: google.devtools.testing.v1.TestExecution.test_details:type_name -> google.devtools.testing.v1.TestDetails 5517 57, // 16: google.devtools.testing.v1.TestSpecification.test_timeout:type_name -> google.protobuf.Duration 5518 10, // 17: google.devtools.testing.v1.TestSpecification.test_setup:type_name -> google.devtools.testing.v1.TestSetup 5519 11, // 18: google.devtools.testing.v1.TestSpecification.ios_test_setup:type_name -> google.devtools.testing.v1.IosTestSetup 5520 24, // 19: google.devtools.testing.v1.TestSpecification.android_instrumentation_test:type_name -> google.devtools.testing.v1.AndroidInstrumentationTest 5521 25, // 20: google.devtools.testing.v1.TestSpecification.android_robo_test:type_name -> google.devtools.testing.v1.AndroidRoboTest 5522 21, // 21: google.devtools.testing.v1.TestSpecification.android_test_loop:type_name -> google.devtools.testing.v1.AndroidTestLoop 5523 22, // 22: google.devtools.testing.v1.TestSpecification.ios_xc_test:type_name -> google.devtools.testing.v1.IosXcTest 5524 23, // 23: google.devtools.testing.v1.TestSpecification.ios_test_loop:type_name -> google.devtools.testing.v1.IosTestLoop 5525 17, // 24: google.devtools.testing.v1.TestSetup.files_to_push:type_name -> google.devtools.testing.v1.DeviceFile 5526 15, // 25: google.devtools.testing.v1.TestSetup.additional_apks:type_name -> google.devtools.testing.v1.Apk 5527 13, // 26: google.devtools.testing.v1.TestSetup.account:type_name -> google.devtools.testing.v1.Account 5528 12, // 27: google.devtools.testing.v1.TestSetup.environment_variables:type_name -> google.devtools.testing.v1.EnvironmentVariable 5529 9, // 28: google.devtools.testing.v1.TestSetup.systrace:type_name -> google.devtools.testing.v1.SystraceSetup 5530 41, // 29: google.devtools.testing.v1.IosTestSetup.additional_ipas:type_name -> google.devtools.testing.v1.FileReference 5531 20, // 30: google.devtools.testing.v1.IosTestSetup.push_files:type_name -> google.devtools.testing.v1.IosDeviceFile 5532 20, // 31: google.devtools.testing.v1.IosTestSetup.pull_directories:type_name -> google.devtools.testing.v1.IosDeviceFile 5533 14, // 32: google.devtools.testing.v1.Account.google_auto:type_name -> google.devtools.testing.v1.GoogleAuto 5534 41, // 33: google.devtools.testing.v1.Apk.location:type_name -> google.devtools.testing.v1.FileReference 5535 41, // 34: google.devtools.testing.v1.AppBundle.bundle_location:type_name -> google.devtools.testing.v1.FileReference 5536 18, // 35: google.devtools.testing.v1.DeviceFile.obb_file:type_name -> google.devtools.testing.v1.ObbFile 5537 19, // 36: google.devtools.testing.v1.DeviceFile.regular_file:type_name -> google.devtools.testing.v1.RegularFile 5538 41, // 37: google.devtools.testing.v1.ObbFile.obb:type_name -> google.devtools.testing.v1.FileReference 5539 41, // 38: google.devtools.testing.v1.RegularFile.content:type_name -> google.devtools.testing.v1.FileReference 5540 41, // 39: google.devtools.testing.v1.IosDeviceFile.content:type_name -> google.devtools.testing.v1.FileReference 5541 41, // 40: google.devtools.testing.v1.AndroidTestLoop.app_apk:type_name -> google.devtools.testing.v1.FileReference 5542 16, // 41: google.devtools.testing.v1.AndroidTestLoop.app_bundle:type_name -> google.devtools.testing.v1.AppBundle 5543 41, // 42: google.devtools.testing.v1.IosXcTest.tests_zip:type_name -> google.devtools.testing.v1.FileReference 5544 41, // 43: google.devtools.testing.v1.IosXcTest.xctestrun:type_name -> google.devtools.testing.v1.FileReference 5545 41, // 44: google.devtools.testing.v1.IosTestLoop.app_ipa:type_name -> google.devtools.testing.v1.FileReference 5546 41, // 45: google.devtools.testing.v1.AndroidInstrumentationTest.app_apk:type_name -> google.devtools.testing.v1.FileReference 5547 16, // 46: google.devtools.testing.v1.AndroidInstrumentationTest.app_bundle:type_name -> google.devtools.testing.v1.AppBundle 5548 41, // 47: google.devtools.testing.v1.AndroidInstrumentationTest.test_apk:type_name -> google.devtools.testing.v1.FileReference 5549 0, // 48: google.devtools.testing.v1.AndroidInstrumentationTest.orchestrator_option:type_name -> google.devtools.testing.v1.OrchestratorOption 5550 47, // 49: google.devtools.testing.v1.AndroidInstrumentationTest.sharding_option:type_name -> google.devtools.testing.v1.ShardingOption 5551 41, // 50: google.devtools.testing.v1.AndroidRoboTest.app_apk:type_name -> google.devtools.testing.v1.FileReference 5552 16, // 51: google.devtools.testing.v1.AndroidRoboTest.app_bundle:type_name -> google.devtools.testing.v1.AppBundle 5553 26, // 52: google.devtools.testing.v1.AndroidRoboTest.robo_directives:type_name -> google.devtools.testing.v1.RoboDirective 5554 41, // 53: google.devtools.testing.v1.AndroidRoboTest.robo_script:type_name -> google.devtools.testing.v1.FileReference 5555 27, // 54: google.devtools.testing.v1.AndroidRoboTest.starting_intents:type_name -> google.devtools.testing.v1.RoboStartingIntent 5556 1, // 55: google.devtools.testing.v1.RoboDirective.action_type:type_name -> google.devtools.testing.v1.RoboActionType 5557 28, // 56: google.devtools.testing.v1.RoboStartingIntent.launcher_activity:type_name -> google.devtools.testing.v1.LauncherActivityIntent 5558 29, // 57: google.devtools.testing.v1.RoboStartingIntent.start_activity:type_name -> google.devtools.testing.v1.StartActivityIntent 5559 57, // 58: google.devtools.testing.v1.RoboStartingIntent.timeout:type_name -> google.protobuf.Duration 5560 33, // 59: google.devtools.testing.v1.EnvironmentMatrix.android_matrix:type_name -> google.devtools.testing.v1.AndroidMatrix 5561 31, // 60: google.devtools.testing.v1.EnvironmentMatrix.android_device_list:type_name -> google.devtools.testing.v1.AndroidDeviceList 5562 32, // 61: google.devtools.testing.v1.EnvironmentMatrix.ios_device_list:type_name -> google.devtools.testing.v1.IosDeviceList 5563 43, // 62: google.devtools.testing.v1.AndroidDeviceList.android_devices:type_name -> google.devtools.testing.v1.AndroidDevice 5564 44, // 63: google.devtools.testing.v1.IosDeviceList.ios_devices:type_name -> google.devtools.testing.v1.IosDevice 5565 35, // 64: google.devtools.testing.v1.ClientInfo.client_info_details:type_name -> google.devtools.testing.v1.ClientInfoDetail 5566 40, // 65: google.devtools.testing.v1.ResultStorage.google_cloud_storage:type_name -> google.devtools.testing.v1.GoogleCloudStorage 5567 37, // 66: google.devtools.testing.v1.ResultStorage.tool_results_history:type_name -> google.devtools.testing.v1.ToolResultsHistory 5568 38, // 67: google.devtools.testing.v1.ResultStorage.tool_results_execution:type_name -> google.devtools.testing.v1.ToolResultsExecution 5569 43, // 68: google.devtools.testing.v1.Environment.android_device:type_name -> google.devtools.testing.v1.AndroidDevice 5570 44, // 69: google.devtools.testing.v1.Environment.ios_device:type_name -> google.devtools.testing.v1.IosDevice 5571 5, // 70: google.devtools.testing.v1.InvalidRequestDetail.reason:type_name -> google.devtools.testing.v1.InvalidRequestDetail.Reason 5572 48, // 71: google.devtools.testing.v1.ShardingOption.uniform_sharding:type_name -> google.devtools.testing.v1.UniformSharding 5573 49, // 72: google.devtools.testing.v1.ShardingOption.manual_sharding:type_name -> google.devtools.testing.v1.ManualSharding 5574 50, // 73: google.devtools.testing.v1.ManualSharding.test_targets_for_shard:type_name -> google.devtools.testing.v1.TestTargetsForShard 5575 50, // 74: google.devtools.testing.v1.Shard.test_targets_for_shard:type_name -> google.devtools.testing.v1.TestTargetsForShard 5576 6, // 75: google.devtools.testing.v1.CreateTestMatrixRequest.test_matrix:type_name -> google.devtools.testing.v1.TestMatrix 5577 3, // 76: google.devtools.testing.v1.CancelTestMatrixResponse.test_state:type_name -> google.devtools.testing.v1.TestState 5578 52, // 77: google.devtools.testing.v1.TestExecutionService.CreateTestMatrix:input_type -> google.devtools.testing.v1.CreateTestMatrixRequest 5579 53, // 78: google.devtools.testing.v1.TestExecutionService.GetTestMatrix:input_type -> google.devtools.testing.v1.GetTestMatrixRequest 5580 54, // 79: google.devtools.testing.v1.TestExecutionService.CancelTestMatrix:input_type -> google.devtools.testing.v1.CancelTestMatrixRequest 5581 6, // 80: google.devtools.testing.v1.TestExecutionService.CreateTestMatrix:output_type -> google.devtools.testing.v1.TestMatrix 5582 6, // 81: google.devtools.testing.v1.TestExecutionService.GetTestMatrix:output_type -> google.devtools.testing.v1.TestMatrix 5583 55, // 82: google.devtools.testing.v1.TestExecutionService.CancelTestMatrix:output_type -> google.devtools.testing.v1.CancelTestMatrixResponse 5584 80, // [80:83] is the sub-list for method output_type 5585 77, // [77:80] is the sub-list for method input_type 5586 77, // [77:77] is the sub-list for extension type_name 5587 77, // [77:77] is the sub-list for extension extendee 5588 0, // [0:77] is the sub-list for field type_name 5589} 5590 5591func init() { file_google_devtools_testing_v1_test_execution_proto_init() } 5592func file_google_devtools_testing_v1_test_execution_proto_init() { 5593 if File_google_devtools_testing_v1_test_execution_proto != nil { 5594 return 5595 } 5596 if !protoimpl.UnsafeEnabled { 5597 file_google_devtools_testing_v1_test_execution_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 5598 switch v := v.(*TestMatrix); i { 5599 case 0: 5600 return &v.state 5601 case 1: 5602 return &v.sizeCache 5603 case 2: 5604 return &v.unknownFields 5605 default: 5606 return nil 5607 } 5608 } 5609 file_google_devtools_testing_v1_test_execution_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 5610 switch v := v.(*TestExecution); i { 5611 case 0: 5612 return &v.state 5613 case 1: 5614 return &v.sizeCache 5615 case 2: 5616 return &v.unknownFields 5617 default: 5618 return nil 5619 } 5620 } 5621 file_google_devtools_testing_v1_test_execution_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 5622 switch v := v.(*TestSpecification); i { 5623 case 0: 5624 return &v.state 5625 case 1: 5626 return &v.sizeCache 5627 case 2: 5628 return &v.unknownFields 5629 default: 5630 return nil 5631 } 5632 } 5633 file_google_devtools_testing_v1_test_execution_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 5634 switch v := v.(*SystraceSetup); i { 5635 case 0: 5636 return &v.state 5637 case 1: 5638 return &v.sizeCache 5639 case 2: 5640 return &v.unknownFields 5641 default: 5642 return nil 5643 } 5644 } 5645 file_google_devtools_testing_v1_test_execution_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 5646 switch v := v.(*TestSetup); i { 5647 case 0: 5648 return &v.state 5649 case 1: 5650 return &v.sizeCache 5651 case 2: 5652 return &v.unknownFields 5653 default: 5654 return nil 5655 } 5656 } 5657 file_google_devtools_testing_v1_test_execution_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 5658 switch v := v.(*IosTestSetup); i { 5659 case 0: 5660 return &v.state 5661 case 1: 5662 return &v.sizeCache 5663 case 2: 5664 return &v.unknownFields 5665 default: 5666 return nil 5667 } 5668 } 5669 file_google_devtools_testing_v1_test_execution_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 5670 switch v := v.(*EnvironmentVariable); i { 5671 case 0: 5672 return &v.state 5673 case 1: 5674 return &v.sizeCache 5675 case 2: 5676 return &v.unknownFields 5677 default: 5678 return nil 5679 } 5680 } 5681 file_google_devtools_testing_v1_test_execution_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 5682 switch v := v.(*Account); i { 5683 case 0: 5684 return &v.state 5685 case 1: 5686 return &v.sizeCache 5687 case 2: 5688 return &v.unknownFields 5689 default: 5690 return nil 5691 } 5692 } 5693 file_google_devtools_testing_v1_test_execution_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 5694 switch v := v.(*GoogleAuto); i { 5695 case 0: 5696 return &v.state 5697 case 1: 5698 return &v.sizeCache 5699 case 2: 5700 return &v.unknownFields 5701 default: 5702 return nil 5703 } 5704 } 5705 file_google_devtools_testing_v1_test_execution_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 5706 switch v := v.(*Apk); i { 5707 case 0: 5708 return &v.state 5709 case 1: 5710 return &v.sizeCache 5711 case 2: 5712 return &v.unknownFields 5713 default: 5714 return nil 5715 } 5716 } 5717 file_google_devtools_testing_v1_test_execution_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 5718 switch v := v.(*AppBundle); i { 5719 case 0: 5720 return &v.state 5721 case 1: 5722 return &v.sizeCache 5723 case 2: 5724 return &v.unknownFields 5725 default: 5726 return nil 5727 } 5728 } 5729 file_google_devtools_testing_v1_test_execution_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 5730 switch v := v.(*DeviceFile); i { 5731 case 0: 5732 return &v.state 5733 case 1: 5734 return &v.sizeCache 5735 case 2: 5736 return &v.unknownFields 5737 default: 5738 return nil 5739 } 5740 } 5741 file_google_devtools_testing_v1_test_execution_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 5742 switch v := v.(*ObbFile); i { 5743 case 0: 5744 return &v.state 5745 case 1: 5746 return &v.sizeCache 5747 case 2: 5748 return &v.unknownFields 5749 default: 5750 return nil 5751 } 5752 } 5753 file_google_devtools_testing_v1_test_execution_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 5754 switch v := v.(*RegularFile); i { 5755 case 0: 5756 return &v.state 5757 case 1: 5758 return &v.sizeCache 5759 case 2: 5760 return &v.unknownFields 5761 default: 5762 return nil 5763 } 5764 } 5765 file_google_devtools_testing_v1_test_execution_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 5766 switch v := v.(*IosDeviceFile); i { 5767 case 0: 5768 return &v.state 5769 case 1: 5770 return &v.sizeCache 5771 case 2: 5772 return &v.unknownFields 5773 default: 5774 return nil 5775 } 5776 } 5777 file_google_devtools_testing_v1_test_execution_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 5778 switch v := v.(*AndroidTestLoop); i { 5779 case 0: 5780 return &v.state 5781 case 1: 5782 return &v.sizeCache 5783 case 2: 5784 return &v.unknownFields 5785 default: 5786 return nil 5787 } 5788 } 5789 file_google_devtools_testing_v1_test_execution_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 5790 switch v := v.(*IosXcTest); i { 5791 case 0: 5792 return &v.state 5793 case 1: 5794 return &v.sizeCache 5795 case 2: 5796 return &v.unknownFields 5797 default: 5798 return nil 5799 } 5800 } 5801 file_google_devtools_testing_v1_test_execution_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 5802 switch v := v.(*IosTestLoop); i { 5803 case 0: 5804 return &v.state 5805 case 1: 5806 return &v.sizeCache 5807 case 2: 5808 return &v.unknownFields 5809 default: 5810 return nil 5811 } 5812 } 5813 file_google_devtools_testing_v1_test_execution_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 5814 switch v := v.(*AndroidInstrumentationTest); i { 5815 case 0: 5816 return &v.state 5817 case 1: 5818 return &v.sizeCache 5819 case 2: 5820 return &v.unknownFields 5821 default: 5822 return nil 5823 } 5824 } 5825 file_google_devtools_testing_v1_test_execution_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 5826 switch v := v.(*AndroidRoboTest); i { 5827 case 0: 5828 return &v.state 5829 case 1: 5830 return &v.sizeCache 5831 case 2: 5832 return &v.unknownFields 5833 default: 5834 return nil 5835 } 5836 } 5837 file_google_devtools_testing_v1_test_execution_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { 5838 switch v := v.(*RoboDirective); i { 5839 case 0: 5840 return &v.state 5841 case 1: 5842 return &v.sizeCache 5843 case 2: 5844 return &v.unknownFields 5845 default: 5846 return nil 5847 } 5848 } 5849 file_google_devtools_testing_v1_test_execution_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { 5850 switch v := v.(*RoboStartingIntent); i { 5851 case 0: 5852 return &v.state 5853 case 1: 5854 return &v.sizeCache 5855 case 2: 5856 return &v.unknownFields 5857 default: 5858 return nil 5859 } 5860 } 5861 file_google_devtools_testing_v1_test_execution_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { 5862 switch v := v.(*LauncherActivityIntent); i { 5863 case 0: 5864 return &v.state 5865 case 1: 5866 return &v.sizeCache 5867 case 2: 5868 return &v.unknownFields 5869 default: 5870 return nil 5871 } 5872 } 5873 file_google_devtools_testing_v1_test_execution_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { 5874 switch v := v.(*StartActivityIntent); i { 5875 case 0: 5876 return &v.state 5877 case 1: 5878 return &v.sizeCache 5879 case 2: 5880 return &v.unknownFields 5881 default: 5882 return nil 5883 } 5884 } 5885 file_google_devtools_testing_v1_test_execution_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { 5886 switch v := v.(*EnvironmentMatrix); i { 5887 case 0: 5888 return &v.state 5889 case 1: 5890 return &v.sizeCache 5891 case 2: 5892 return &v.unknownFields 5893 default: 5894 return nil 5895 } 5896 } 5897 file_google_devtools_testing_v1_test_execution_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { 5898 switch v := v.(*AndroidDeviceList); i { 5899 case 0: 5900 return &v.state 5901 case 1: 5902 return &v.sizeCache 5903 case 2: 5904 return &v.unknownFields 5905 default: 5906 return nil 5907 } 5908 } 5909 file_google_devtools_testing_v1_test_execution_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { 5910 switch v := v.(*IosDeviceList); i { 5911 case 0: 5912 return &v.state 5913 case 1: 5914 return &v.sizeCache 5915 case 2: 5916 return &v.unknownFields 5917 default: 5918 return nil 5919 } 5920 } 5921 file_google_devtools_testing_v1_test_execution_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { 5922 switch v := v.(*AndroidMatrix); i { 5923 case 0: 5924 return &v.state 5925 case 1: 5926 return &v.sizeCache 5927 case 2: 5928 return &v.unknownFields 5929 default: 5930 return nil 5931 } 5932 } 5933 file_google_devtools_testing_v1_test_execution_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { 5934 switch v := v.(*ClientInfo); i { 5935 case 0: 5936 return &v.state 5937 case 1: 5938 return &v.sizeCache 5939 case 2: 5940 return &v.unknownFields 5941 default: 5942 return nil 5943 } 5944 } 5945 file_google_devtools_testing_v1_test_execution_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { 5946 switch v := v.(*ClientInfoDetail); i { 5947 case 0: 5948 return &v.state 5949 case 1: 5950 return &v.sizeCache 5951 case 2: 5952 return &v.unknownFields 5953 default: 5954 return nil 5955 } 5956 } 5957 file_google_devtools_testing_v1_test_execution_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { 5958 switch v := v.(*ResultStorage); i { 5959 case 0: 5960 return &v.state 5961 case 1: 5962 return &v.sizeCache 5963 case 2: 5964 return &v.unknownFields 5965 default: 5966 return nil 5967 } 5968 } 5969 file_google_devtools_testing_v1_test_execution_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { 5970 switch v := v.(*ToolResultsHistory); i { 5971 case 0: 5972 return &v.state 5973 case 1: 5974 return &v.sizeCache 5975 case 2: 5976 return &v.unknownFields 5977 default: 5978 return nil 5979 } 5980 } 5981 file_google_devtools_testing_v1_test_execution_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { 5982 switch v := v.(*ToolResultsExecution); i { 5983 case 0: 5984 return &v.state 5985 case 1: 5986 return &v.sizeCache 5987 case 2: 5988 return &v.unknownFields 5989 default: 5990 return nil 5991 } 5992 } 5993 file_google_devtools_testing_v1_test_execution_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { 5994 switch v := v.(*ToolResultsStep); i { 5995 case 0: 5996 return &v.state 5997 case 1: 5998 return &v.sizeCache 5999 case 2: 6000 return &v.unknownFields 6001 default: 6002 return nil 6003 } 6004 } 6005 file_google_devtools_testing_v1_test_execution_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { 6006 switch v := v.(*GoogleCloudStorage); i { 6007 case 0: 6008 return &v.state 6009 case 1: 6010 return &v.sizeCache 6011 case 2: 6012 return &v.unknownFields 6013 default: 6014 return nil 6015 } 6016 } 6017 file_google_devtools_testing_v1_test_execution_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { 6018 switch v := v.(*FileReference); i { 6019 case 0: 6020 return &v.state 6021 case 1: 6022 return &v.sizeCache 6023 case 2: 6024 return &v.unknownFields 6025 default: 6026 return nil 6027 } 6028 } 6029 file_google_devtools_testing_v1_test_execution_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { 6030 switch v := v.(*Environment); i { 6031 case 0: 6032 return &v.state 6033 case 1: 6034 return &v.sizeCache 6035 case 2: 6036 return &v.unknownFields 6037 default: 6038 return nil 6039 } 6040 } 6041 file_google_devtools_testing_v1_test_execution_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { 6042 switch v := v.(*AndroidDevice); i { 6043 case 0: 6044 return &v.state 6045 case 1: 6046 return &v.sizeCache 6047 case 2: 6048 return &v.unknownFields 6049 default: 6050 return nil 6051 } 6052 } 6053 file_google_devtools_testing_v1_test_execution_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { 6054 switch v := v.(*IosDevice); i { 6055 case 0: 6056 return &v.state 6057 case 1: 6058 return &v.sizeCache 6059 case 2: 6060 return &v.unknownFields 6061 default: 6062 return nil 6063 } 6064 } 6065 file_google_devtools_testing_v1_test_execution_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { 6066 switch v := v.(*TestDetails); i { 6067 case 0: 6068 return &v.state 6069 case 1: 6070 return &v.sizeCache 6071 case 2: 6072 return &v.unknownFields 6073 default: 6074 return nil 6075 } 6076 } 6077 file_google_devtools_testing_v1_test_execution_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { 6078 switch v := v.(*InvalidRequestDetail); i { 6079 case 0: 6080 return &v.state 6081 case 1: 6082 return &v.sizeCache 6083 case 2: 6084 return &v.unknownFields 6085 default: 6086 return nil 6087 } 6088 } 6089 file_google_devtools_testing_v1_test_execution_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { 6090 switch v := v.(*ShardingOption); i { 6091 case 0: 6092 return &v.state 6093 case 1: 6094 return &v.sizeCache 6095 case 2: 6096 return &v.unknownFields 6097 default: 6098 return nil 6099 } 6100 } 6101 file_google_devtools_testing_v1_test_execution_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { 6102 switch v := v.(*UniformSharding); i { 6103 case 0: 6104 return &v.state 6105 case 1: 6106 return &v.sizeCache 6107 case 2: 6108 return &v.unknownFields 6109 default: 6110 return nil 6111 } 6112 } 6113 file_google_devtools_testing_v1_test_execution_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { 6114 switch v := v.(*ManualSharding); i { 6115 case 0: 6116 return &v.state 6117 case 1: 6118 return &v.sizeCache 6119 case 2: 6120 return &v.unknownFields 6121 default: 6122 return nil 6123 } 6124 } 6125 file_google_devtools_testing_v1_test_execution_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { 6126 switch v := v.(*TestTargetsForShard); i { 6127 case 0: 6128 return &v.state 6129 case 1: 6130 return &v.sizeCache 6131 case 2: 6132 return &v.unknownFields 6133 default: 6134 return nil 6135 } 6136 } 6137 file_google_devtools_testing_v1_test_execution_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { 6138 switch v := v.(*Shard); i { 6139 case 0: 6140 return &v.state 6141 case 1: 6142 return &v.sizeCache 6143 case 2: 6144 return &v.unknownFields 6145 default: 6146 return nil 6147 } 6148 } 6149 file_google_devtools_testing_v1_test_execution_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { 6150 switch v := v.(*CreateTestMatrixRequest); i { 6151 case 0: 6152 return &v.state 6153 case 1: 6154 return &v.sizeCache 6155 case 2: 6156 return &v.unknownFields 6157 default: 6158 return nil 6159 } 6160 } 6161 file_google_devtools_testing_v1_test_execution_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { 6162 switch v := v.(*GetTestMatrixRequest); i { 6163 case 0: 6164 return &v.state 6165 case 1: 6166 return &v.sizeCache 6167 case 2: 6168 return &v.unknownFields 6169 default: 6170 return nil 6171 } 6172 } 6173 file_google_devtools_testing_v1_test_execution_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { 6174 switch v := v.(*CancelTestMatrixRequest); i { 6175 case 0: 6176 return &v.state 6177 case 1: 6178 return &v.sizeCache 6179 case 2: 6180 return &v.unknownFields 6181 default: 6182 return nil 6183 } 6184 } 6185 file_google_devtools_testing_v1_test_execution_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { 6186 switch v := v.(*CancelTestMatrixResponse); i { 6187 case 0: 6188 return &v.state 6189 case 1: 6190 return &v.sizeCache 6191 case 2: 6192 return &v.unknownFields 6193 default: 6194 return nil 6195 } 6196 } 6197 } 6198 file_google_devtools_testing_v1_test_execution_proto_msgTypes[2].OneofWrappers = []interface{}{ 6199 (*TestSpecification_TestSetup)(nil), 6200 (*TestSpecification_IosTestSetup)(nil), 6201 (*TestSpecification_AndroidInstrumentationTest)(nil), 6202 (*TestSpecification_AndroidRoboTest)(nil), 6203 (*TestSpecification_AndroidTestLoop)(nil), 6204 (*TestSpecification_IosXcTest)(nil), 6205 (*TestSpecification_IosTestLoop)(nil), 6206 } 6207 file_google_devtools_testing_v1_test_execution_proto_msgTypes[7].OneofWrappers = []interface{}{ 6208 (*Account_GoogleAuto)(nil), 6209 } 6210 file_google_devtools_testing_v1_test_execution_proto_msgTypes[10].OneofWrappers = []interface{}{ 6211 (*AppBundle_BundleLocation)(nil), 6212 } 6213 file_google_devtools_testing_v1_test_execution_proto_msgTypes[11].OneofWrappers = []interface{}{ 6214 (*DeviceFile_ObbFile)(nil), 6215 (*DeviceFile_RegularFile)(nil), 6216 } 6217 file_google_devtools_testing_v1_test_execution_proto_msgTypes[15].OneofWrappers = []interface{}{ 6218 (*AndroidTestLoop_AppApk)(nil), 6219 (*AndroidTestLoop_AppBundle)(nil), 6220 } 6221 file_google_devtools_testing_v1_test_execution_proto_msgTypes[18].OneofWrappers = []interface{}{ 6222 (*AndroidInstrumentationTest_AppApk)(nil), 6223 (*AndroidInstrumentationTest_AppBundle)(nil), 6224 } 6225 file_google_devtools_testing_v1_test_execution_proto_msgTypes[19].OneofWrappers = []interface{}{ 6226 (*AndroidRoboTest_AppApk)(nil), 6227 (*AndroidRoboTest_AppBundle)(nil), 6228 } 6229 file_google_devtools_testing_v1_test_execution_proto_msgTypes[21].OneofWrappers = []interface{}{ 6230 (*RoboStartingIntent_LauncherActivity)(nil), 6231 (*RoboStartingIntent_StartActivity)(nil), 6232 } 6233 file_google_devtools_testing_v1_test_execution_proto_msgTypes[24].OneofWrappers = []interface{}{ 6234 (*EnvironmentMatrix_AndroidMatrix)(nil), 6235 (*EnvironmentMatrix_AndroidDeviceList)(nil), 6236 (*EnvironmentMatrix_IosDeviceList)(nil), 6237 } 6238 file_google_devtools_testing_v1_test_execution_proto_msgTypes[35].OneofWrappers = []interface{}{ 6239 (*FileReference_GcsPath)(nil), 6240 } 6241 file_google_devtools_testing_v1_test_execution_proto_msgTypes[36].OneofWrappers = []interface{}{ 6242 (*Environment_AndroidDevice)(nil), 6243 (*Environment_IosDevice)(nil), 6244 } 6245 file_google_devtools_testing_v1_test_execution_proto_msgTypes[41].OneofWrappers = []interface{}{ 6246 (*ShardingOption_UniformSharding)(nil), 6247 (*ShardingOption_ManualSharding)(nil), 6248 } 6249 type x struct{} 6250 out := protoimpl.TypeBuilder{ 6251 File: protoimpl.DescBuilder{ 6252 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 6253 RawDescriptor: file_google_devtools_testing_v1_test_execution_proto_rawDesc, 6254 NumEnums: 6, 6255 NumMessages: 50, 6256 NumExtensions: 0, 6257 NumServices: 1, 6258 }, 6259 GoTypes: file_google_devtools_testing_v1_test_execution_proto_goTypes, 6260 DependencyIndexes: file_google_devtools_testing_v1_test_execution_proto_depIdxs, 6261 EnumInfos: file_google_devtools_testing_v1_test_execution_proto_enumTypes, 6262 MessageInfos: file_google_devtools_testing_v1_test_execution_proto_msgTypes, 6263 }.Build() 6264 File_google_devtools_testing_v1_test_execution_proto = out.File 6265 file_google_devtools_testing_v1_test_execution_proto_rawDesc = nil 6266 file_google_devtools_testing_v1_test_execution_proto_goTypes = nil 6267 file_google_devtools_testing_v1_test_execution_proto_depIdxs = nil 6268} 6269 6270// Reference imports to suppress errors if they are not otherwise used. 6271var _ context.Context 6272var _ grpc.ClientConnInterface 6273 6274// This is a compile-time assertion to ensure that this generated file 6275// is compatible with the grpc package it is being compiled against. 6276const _ = grpc.SupportPackageIsVersion6 6277 6278// TestExecutionServiceClient is the client API for TestExecutionService service. 6279// 6280// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. 6281type TestExecutionServiceClient interface { 6282 // Creates and runs a matrix of tests according to the given specifications. 6283 // Unsupported environments will be returned in the state UNSUPPORTED. 6284 // A test matrix is limited to use at most 2000 devices in parallel. 6285 // 6286 // May return any of the following canonical error codes: 6287 // 6288 // - PERMISSION_DENIED - if the user is not authorized to write to project 6289 // - INVALID_ARGUMENT - if the request is malformed or if the matrix tries 6290 // to use too many simultaneous devices. 6291 CreateTestMatrix(ctx context.Context, in *CreateTestMatrixRequest, opts ...grpc.CallOption) (*TestMatrix, error) 6292 // Checks the status of a test matrix. 6293 // 6294 // May return any of the following canonical error codes: 6295 // 6296 // - PERMISSION_DENIED - if the user is not authorized to read project 6297 // - INVALID_ARGUMENT - if the request is malformed 6298 // - NOT_FOUND - if the Test Matrix does not exist 6299 GetTestMatrix(ctx context.Context, in *GetTestMatrixRequest, opts ...grpc.CallOption) (*TestMatrix, error) 6300 // Cancels unfinished test executions in a test matrix. 6301 // This call returns immediately and cancellation proceeds asynchronously. 6302 // If the matrix is already final, this operation will have no effect. 6303 // 6304 // May return any of the following canonical error codes: 6305 // 6306 // - PERMISSION_DENIED - if the user is not authorized to read project 6307 // - INVALID_ARGUMENT - if the request is malformed 6308 // - NOT_FOUND - if the Test Matrix does not exist 6309 CancelTestMatrix(ctx context.Context, in *CancelTestMatrixRequest, opts ...grpc.CallOption) (*CancelTestMatrixResponse, error) 6310} 6311 6312type testExecutionServiceClient struct { 6313 cc grpc.ClientConnInterface 6314} 6315 6316func NewTestExecutionServiceClient(cc grpc.ClientConnInterface) TestExecutionServiceClient { 6317 return &testExecutionServiceClient{cc} 6318} 6319 6320func (c *testExecutionServiceClient) CreateTestMatrix(ctx context.Context, in *CreateTestMatrixRequest, opts ...grpc.CallOption) (*TestMatrix, error) { 6321 out := new(TestMatrix) 6322 err := c.cc.Invoke(ctx, "/google.devtools.testing.v1.TestExecutionService/CreateTestMatrix", in, out, opts...) 6323 if err != nil { 6324 return nil, err 6325 } 6326 return out, nil 6327} 6328 6329func (c *testExecutionServiceClient) GetTestMatrix(ctx context.Context, in *GetTestMatrixRequest, opts ...grpc.CallOption) (*TestMatrix, error) { 6330 out := new(TestMatrix) 6331 err := c.cc.Invoke(ctx, "/google.devtools.testing.v1.TestExecutionService/GetTestMatrix", in, out, opts...) 6332 if err != nil { 6333 return nil, err 6334 } 6335 return out, nil 6336} 6337 6338func (c *testExecutionServiceClient) CancelTestMatrix(ctx context.Context, in *CancelTestMatrixRequest, opts ...grpc.CallOption) (*CancelTestMatrixResponse, error) { 6339 out := new(CancelTestMatrixResponse) 6340 err := c.cc.Invoke(ctx, "/google.devtools.testing.v1.TestExecutionService/CancelTestMatrix", in, out, opts...) 6341 if err != nil { 6342 return nil, err 6343 } 6344 return out, nil 6345} 6346 6347// TestExecutionServiceServer is the server API for TestExecutionService service. 6348type TestExecutionServiceServer interface { 6349 // Creates and runs a matrix of tests according to the given specifications. 6350 // Unsupported environments will be returned in the state UNSUPPORTED. 6351 // A test matrix is limited to use at most 2000 devices in parallel. 6352 // 6353 // May return any of the following canonical error codes: 6354 // 6355 // - PERMISSION_DENIED - if the user is not authorized to write to project 6356 // - INVALID_ARGUMENT - if the request is malformed or if the matrix tries 6357 // to use too many simultaneous devices. 6358 CreateTestMatrix(context.Context, *CreateTestMatrixRequest) (*TestMatrix, error) 6359 // Checks the status of a test matrix. 6360 // 6361 // May return any of the following canonical error codes: 6362 // 6363 // - PERMISSION_DENIED - if the user is not authorized to read project 6364 // - INVALID_ARGUMENT - if the request is malformed 6365 // - NOT_FOUND - if the Test Matrix does not exist 6366 GetTestMatrix(context.Context, *GetTestMatrixRequest) (*TestMatrix, error) 6367 // Cancels unfinished test executions in a test matrix. 6368 // This call returns immediately and cancellation proceeds asynchronously. 6369 // If the matrix is already final, this operation will have no effect. 6370 // 6371 // May return any of the following canonical error codes: 6372 // 6373 // - PERMISSION_DENIED - if the user is not authorized to read project 6374 // - INVALID_ARGUMENT - if the request is malformed 6375 // - NOT_FOUND - if the Test Matrix does not exist 6376 CancelTestMatrix(context.Context, *CancelTestMatrixRequest) (*CancelTestMatrixResponse, error) 6377} 6378 6379// UnimplementedTestExecutionServiceServer can be embedded to have forward compatible implementations. 6380type UnimplementedTestExecutionServiceServer struct { 6381} 6382 6383func (*UnimplementedTestExecutionServiceServer) CreateTestMatrix(context.Context, *CreateTestMatrixRequest) (*TestMatrix, error) { 6384 return nil, status.Errorf(codes.Unimplemented, "method CreateTestMatrix not implemented") 6385} 6386func (*UnimplementedTestExecutionServiceServer) GetTestMatrix(context.Context, *GetTestMatrixRequest) (*TestMatrix, error) { 6387 return nil, status.Errorf(codes.Unimplemented, "method GetTestMatrix not implemented") 6388} 6389func (*UnimplementedTestExecutionServiceServer) CancelTestMatrix(context.Context, *CancelTestMatrixRequest) (*CancelTestMatrixResponse, error) { 6390 return nil, status.Errorf(codes.Unimplemented, "method CancelTestMatrix not implemented") 6391} 6392 6393func RegisterTestExecutionServiceServer(s *grpc.Server, srv TestExecutionServiceServer) { 6394 s.RegisterService(&_TestExecutionService_serviceDesc, srv) 6395} 6396 6397func _TestExecutionService_CreateTestMatrix_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 6398 in := new(CreateTestMatrixRequest) 6399 if err := dec(in); err != nil { 6400 return nil, err 6401 } 6402 if interceptor == nil { 6403 return srv.(TestExecutionServiceServer).CreateTestMatrix(ctx, in) 6404 } 6405 info := &grpc.UnaryServerInfo{ 6406 Server: srv, 6407 FullMethod: "/google.devtools.testing.v1.TestExecutionService/CreateTestMatrix", 6408 } 6409 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 6410 return srv.(TestExecutionServiceServer).CreateTestMatrix(ctx, req.(*CreateTestMatrixRequest)) 6411 } 6412 return interceptor(ctx, in, info, handler) 6413} 6414 6415func _TestExecutionService_GetTestMatrix_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 6416 in := new(GetTestMatrixRequest) 6417 if err := dec(in); err != nil { 6418 return nil, err 6419 } 6420 if interceptor == nil { 6421 return srv.(TestExecutionServiceServer).GetTestMatrix(ctx, in) 6422 } 6423 info := &grpc.UnaryServerInfo{ 6424 Server: srv, 6425 FullMethod: "/google.devtools.testing.v1.TestExecutionService/GetTestMatrix", 6426 } 6427 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 6428 return srv.(TestExecutionServiceServer).GetTestMatrix(ctx, req.(*GetTestMatrixRequest)) 6429 } 6430 return interceptor(ctx, in, info, handler) 6431} 6432 6433func _TestExecutionService_CancelTestMatrix_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 6434 in := new(CancelTestMatrixRequest) 6435 if err := dec(in); err != nil { 6436 return nil, err 6437 } 6438 if interceptor == nil { 6439 return srv.(TestExecutionServiceServer).CancelTestMatrix(ctx, in) 6440 } 6441 info := &grpc.UnaryServerInfo{ 6442 Server: srv, 6443 FullMethod: "/google.devtools.testing.v1.TestExecutionService/CancelTestMatrix", 6444 } 6445 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 6446 return srv.(TestExecutionServiceServer).CancelTestMatrix(ctx, req.(*CancelTestMatrixRequest)) 6447 } 6448 return interceptor(ctx, in, info, handler) 6449} 6450 6451var _TestExecutionService_serviceDesc = grpc.ServiceDesc{ 6452 ServiceName: "google.devtools.testing.v1.TestExecutionService", 6453 HandlerType: (*TestExecutionServiceServer)(nil), 6454 Methods: []grpc.MethodDesc{ 6455 { 6456 MethodName: "CreateTestMatrix", 6457 Handler: _TestExecutionService_CreateTestMatrix_Handler, 6458 }, 6459 { 6460 MethodName: "GetTestMatrix", 6461 Handler: _TestExecutionService_GetTestMatrix_Handler, 6462 }, 6463 { 6464 MethodName: "CancelTestMatrix", 6465 Handler: _TestExecutionService_CancelTestMatrix_Handler, 6466 }, 6467 }, 6468 Streams: []grpc.StreamDesc{}, 6469 Metadata: "google/devtools/testing/v1/test_execution.proto", 6470} 6471